Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jtable中的动态jcombobox项

jtable中的动态jcombobox项
EN

Stack Overflow用户
提问于 2013-03-07 13:10:13
回答 3查看 3.3K关注 0票数 0

我正在尝试创建一个Jtable,每行有两个combobox。我查看了相关的教程,发现我可以在combobox中添加静态数据。但是为什么我可以将动态数据加载到组合框中。

甚至,每当用户从行中选择组合框1时,基于该选择,组合框2将被更新。

有人能帮我解决这个问题吗?

如果我从combobox执行removeAllItems(),那么combobox 2将会更新,但我无法添加新条目。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-07 16:02:17

表有两列,现在都呈现为JComboBox.,Column-2项的选择取决于Column-1的选择。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.Component;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;

import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class ComboBoxExample {

    private void createUI() {

        JFrame frame = new JFrame();

        Object[] columNames = {"Combo-1", "Combo-2"};
        Object[][] data = {{"", ""}, {"", ""}, {"", ""}, {"", ""}};

        JTable table = new JTable(data, columNames);

        table.getColumnModel().getColumn(0).setCellEditor(new CustomComboBoxEditor());
        table.getColumnModel().getColumn(1).setCellEditor(new CustomComboBoxEditor());

        frame.add(new JScrollPane(table));
        frame.setTitle("Column -2 based on Column - 1 ComboBox Selection.");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                new ComboBoxExample().createUI();
            }
        };

        EventQueue.invokeLater(r);
    }

}

class CustomComboBoxEditor extends DefaultCellEditor {

    // Declare a model that is used for adding the elements to the `ComboBox`
    private DefaultComboBoxModel model;

    private List<String> obtainedList;

    public CustomComboBoxEditor() {
        super(new JComboBox());
        this.model = (DefaultComboBoxModel)((JComboBox)getComponent()).getModel();
        obtainedList = new ArrayList<String>();

        obtainedList.add("One");
        obtainedList.add("Two");
        obtainedList.add("Three");
        obtainedList.add("Four");
        obtainedList.add("Five");
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {


       if(column == 0) {
           model.removeAllElements();
           for(int i = 0; i < obtainedList.size(); i++) {
               model.addElement(obtainedList.get(i));
            } 
        } else {

             model.removeAllElements();
             String selectedItem = (String) table.getValueAt(row, 0);
             for(int i = 0; i < obtainedList.size(); i++) {
                    if(!selectedItem.equals(obtainedList.get(i)))
                    model.addElement(obtainedList.get(i));
             } 
         } // Close else

        return super.getTableCellEditorComponent(table, value, isSelected, row, column);
     }
    }
票数 3
EN

Stack Overflow用户

发布于 2013-05-24 15:51:09

尝试这样做,您可以更改此示例中的数据,并重新绘制和执行单元格的渲染器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public void example(){  

      TableColumn tmpColum =table.getColumnModel().getColumn(1);
      String[] DATA = { "Data 1", "Data 2", "Data 3", "Data 4" };
      JComboBox comboBox = new JComboBox(DATA);

      DefaultCellEditor defaultCellEditor=new DefaultCellEditor(comboBox);
      tmpColum.setCellEditor(defaultCellEditor);
      tmpColum.setCellRenderer(new CheckBoxCellRenderer(comboBox));
      table.repaint();
   }


/**
   Custom class for adding elements in the JComboBox.
*/
class CheckBoxCellRenderer implements TableCellRenderer {
        JComboBox combo;
        public CheckBoxCellRenderer(JComboBox comboBox) {
            this.combo = new JComboBox();
            for (int i=0; i<comboBox.getItemCount(); i++){
                combo.addItem(comboBox.getItemAt(i));
            }
        }
        public Component getTableCellRendererComponent(JTable jtable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            combo.setSelectedItem(value);
            return combo;
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2016-10-03 12:32:52

在调用removeAllItems()之后,将组合框中的项添加为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  combobox.addItem("one");
  combobox.addItem("two");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15272104

复制
相关文章
myeclipse去除jsp校验错误
选择你的工程右击菜单 >> 点击MyEclipse菜单项的Exclude From Validation,如果你的工程里还 有其它需要它检验其合法性建议可以针对某一文件夹或具体文件进行此项操作,这样可以只针对WEB工 程里的某一个文件夹里面的JSP/JS文件来进行验证排除,这样就不会对这些被排除的文件或文件夹进行 验证了,不过再你打开这些文件时,文件里面是有错误提示的,但工程是不会出现语法错误提示的。这 样不仅解决了工程总提示语法信息错误的烦恼,对于一些确实存在问题的文件也可以查看其错误问题所 在,可谓一举
用户1220053
2018/02/09
9510
MyEclipse中如何隐藏关闭的项目?
问题描述:   我们有很多已经关闭的项目,不想让它显示,该如何办呢?如下图所示: 操作步骤: 效果如下:
黑泽君
2018/10/11
1.3K0
MyEclipse中如何隐藏关闭的项目?
JSP 页面中的 路径问题
上面两种写法是相同的,都是指向 webapp 应用程序下的 login.jsp 页面。
wsuo
2020/07/30
8.4K0
JSP 页面中的 路径问题
在JSP页面中调用另一个JSP页面中的变量
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/16896447
DannyHoo
2018/09/13
7.9K0
java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp
web.xml的配置很简单啦,网上搜一下就一大堆了。 <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> 这里分享一下自己刚完成的自定义错误页面error.jsp,高度可用~~~欢迎提出问题指正~~ <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page
用户1258909
2018/07/03
2K0
Tomcat 工作原理、使用方法和错误汇总
参考链接:https://blog.csdn.net/qq_32786873/article/details/79609314
城市中的游牧民族
2019/02/21
1.1K0
Tomcat 工作原理、使用方法和错误汇总
Myeclipse错误集锦
Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project 'myf'. java.lang.NullPointerException
WindCoder
2018/09/20
9140
Eclipse & Spring Tool Suite常用配置
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse是Java开发人员常用的开发工具,虽然现在很多人转向使用IDEA,但是Eclipse给我们还是留下了一段美好的回忆。
Java架构师必看
2020/04/22
2K0
Struts2学习---result结果集 result type:全局结果集:动态结果集带有参数的结果集
这一章节主要介绍如何配置结果集,分为以下几个知识点: 结果集类型(result type) 全局结果集(global types) 动态结果集(dynamic type) 带有参数的结果集(type with params) result type: 结果集类型一共有十一种: dispatcher redirect chain redirectAction freemarker httpheader stream velocity xslt plaintext tiles 最常用的是前两种:一个是请求转发
MindMrWang
2018/04/16
1.8K0
Eclipse中java获得mysql的查询结果集
本文介绍了在Java中如何获取MySQL数据库的查询结果集,并对代码进行了详细的解释和注释。包括使用DriverManager类来加载数据库驱动、使用Connection对象创建与数据库的连接、使用Statement对象创建SQL语句、使用ResultSet对象获取查询结果集、使用next()方法遍历结果集、使用getXXX()方法获取结果集中的数据以及使用close()方法关闭数据库连接。
别先生
2017/12/29
4.9K0
Eclipse中java获得mysql的查询结果集
jsp web应用开发_JSP页面
1. 动态网页是指服务器端运行的程序或者网页,它们会随不同客户,不同时间,返回不同的内容。
全栈程序员站长
2022/09/27
17.2K0
错误集锦2.jsp页面syntax error,insert“}”to complete block
补:错误集锦1-HttpServlet was not found on the Java Build Path。 我们在用Eclipse进行Java web开发时,可能会出现这样的错误:The su
Java帮帮
2018/03/16
1.5K0
错误集锦2.jsp页面syntax error,insert“}”to complete block
WordPress 技巧:从搜索结果中排除页面
默认情况下,WordPress 搜索结果显示发布的文章和页面,如果想把页面从 WordPress 搜索结果中排除,可以在当前主题的 functions.php 文件中添加如下的函数:
Denis
2023/04/13
4810
Myeclipse 2017 Ci 5中文版
1、解压安装包,并点击“myeclipse-2017-ci-5-offline-installer-windows.exe”开始正式的安装,等待解压完成
李才哥
2019/07/09
2K0
Myeclipse 2017 Ci 5中文版
Confluence 6 从关闭的连接中恢复 原
当数据库服务器进行重启或者因为网络问题导致连接中断。所有在数据库连接池中的连接都会被中断。希望处理这个问题,通常需要 Confluence 进行重启。
HoneyMoose
2019/01/31
8450
easy的jsp的增删改查在一个jsp页面上
easy的jsp的增删改查在一个jsp页面上
Java架构师必看
2021/05/14
4.6K0
Mybatis的结果集处理 顶
此时我们已经可以把整段的SQL语句取出,但还并没有在数据库中去执行,我们可以先来分析一下配置文件中SQL语句执行后的结果集是如何处理的。
算法之名
2019/08/20
4K0
JSP中的Cookie
Cookie cookie_name =new Cookie("Parameter","Value");
HUC思梦
2020/09/03
2.3K0
JSP页面静态化
 Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都....
肖哥哥
2019/02/22
5.8K0
JSP页面静态化
点击加载更多

相似问题

JSP中的结果集

14

sql结果集以输出JSP页面

12

MyEclipse禁用JSP中的javascript验证

13

java中的结果集已关闭错误

214

如何从java脚本中关闭JSP页面

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文