首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JTable中的JComboBox不保存选择

是指在使用JComboBox作为JTable的单元格编辑器时,当用户选择一个选项后,JComboBox无法保存用户的选择。

JTable是Swing库中的一个组件,用于显示和编辑表格数据。JComboBox是Swing库中的另一个组件,用于提供下拉选择框。在JTable中使用JComboBox作为单元格编辑器,可以让用户通过下拉选择框来编辑表格中的数据。

然而,JTable中的JComboBox默认不会保存用户的选择。这是因为JTable的数据模型是基于TableModel接口实现的,而TableModel接口只负责保存表格数据,不负责保存编辑器的状态。

要解决这个问题,可以通过自定义TableCellEditor来保存JComboBox的选择。具体步骤如下:

  1. 创建一个继承自DefaultCellEditor的自定义TableCellEditor类。
  2. 在自定义TableCellEditor类的构造函数中,传入一个JComboBox作为编辑器组件。
  3. 重写getCellEditorValue()方法,该方法在用户完成编辑时被调用,用于获取用户的选择并返回。
  4. 在JTable中使用自定义的TableCellEditor作为JComboBox的单元格编辑器。

以下是一个示例代码:

代码语言:txt
复制
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;

public class JComboBoxInJTableExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JComboBox in JTable Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建表格数据模型
        DefaultTableModel model = new DefaultTableModel();
        model.addColumn("Name");
        model.addColumn("Gender");
        model.addRow(new Object[]{"John", "Male"});
        model.addRow(new Object[]{"Jane", "Female"});

        // 创建JTable并设置数据模型
        JTable table = new JTable(model);

        // 创建JComboBox作为单元格编辑器
        JComboBox<String> comboBox = new JComboBox<>();
        comboBox.addItem("Male");
        comboBox.addItem("Female");

        // 创建自定义的TableCellEditor
        TableCellEditor cellEditor = new DefaultCellEditor(comboBox);

        // 设置JTable的单元格编辑器
        table.getColumnModel().getColumn(1).setCellEditor(cellEditor);

        // 将JTable放入滚动窗格中,并将滚动窗格添加到窗口中
        JScrollPane scrollPane = new JScrollPane(table);
        frame.add(scrollPane);

        frame.pack();
        frame.setVisible(true);
    }
}

在上述示例中,我们创建了一个包含两列的JTable,并使用JComboBox作为第二列的单元格编辑器。用户可以通过下拉选择框来编辑第二列的数据。当用户完成编辑时,JComboBox会保存用户的选择,并将选择的值作为getCellEditorValue()方法的返回值。

这样,我们就解决了JTable中的JComboBox不保存选择的问题。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。腾讯云云服务器提供可扩展的计算能力,适用于各种规模的应用程序和工作负载。腾讯云数据库提供高性能、可扩展的数据库服务,支持多种数据库引擎和存储引擎。

腾讯云云服务器产品介绍链接:https://cloud.tencent.com/product/cvm 腾讯云数据库产品介绍链接:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图书管理系统代码 4SearchFrame (…

= new JLabel("请选择分类:"); northPanel1.add(label,BorderLayout.WEST); // 定义按钮组 bg = new ButtonGroup...int m = Integer.parseInt(textField.getText()); book_search =(Book)obo.readObject();//先读取第一个对象 // 如果文本框输入文字出现在某个对象执行以下操作...Radio_author.isSelected()){ int m=0; do{ if(m<=n){ book_search =(Book)obo.readObject();//先读取第一个对象 // 如果文本框输入文字出现在某个对象执行以下操作...OptionalDataException e5) { e5.printStackTrace(); }catch(FileNotFoundException e6) { } catch (IOException e2) { // 当所选择分类没有一个书籍对象时...; private  JComboBox comBoBox; private JTextField textField ; private JTable  table_search ; private

1.2K20

JavaSwing 图形界面GUI王者级开发(大纲)

JTextField(文本框) JavaSwing_2.7: JPasswordField(密码框) JavaSwing_2.8: JTextArea(文本区域) JavaSwing_2.9: JComboBox...其他组件 JavaSwing_4.1: JFrame(窗口) JavaSwing_4.2: JDialog、JOptionPane(对话框) JavaSwing_4.3: JFileChooser(文件选择器..._4.7: JPopupMenu(弹出菜单) JavaSwing_4.8: JTable(表格) JavaSwing_4.9: JTree(树) JavaSwing_4.10: JInternalFrame...(内部窗口) 5 相关特性 JavaSwing_5.1: 组件位置和尺寸 JavaSwing_5.2: 组件边框(Border) JavaSwing_5.4: 多线程并发与线程安全 JavaSwing...、绘制、缩放、裁剪、保存 Java代码截屏:使用 Java 代码截取电脑屏幕并保存 Java模拟鼠标键盘输入事件 — Robot 类 Java操作桌面应用 — Desktop 类 Java操作系统剪贴板

1.3K10
  • java swing 实现数据库增删查改

    最近一个实习生问我,swing好难啊,就是jtable增删查改都做不出来了,我也好久没有做了,各种文档,各种查找,各种百度终于是完成了一个小项目,也就是所说增删除查改。废话了,上代码。...用于存储表格数据 private IDeptDao deptDao; private IUserDao userDao; private String oldValue = "";// 保存单元格编辑...cob = new JComboBox(deptList.toArray()); // 创建一个使用下拉框代替编辑框单元格对象 DefaultCellEditor dept = new...= userDao.queryAll(); // 遍历每一条数据,添加到model int i = 0; for (User user : list) { //...void del() { if (table.getSelectedRowCount() <= 0) { JOptionPane.showMessageDialog(null, "请选择要删除数据行

    2.7K31

    Kubernetes 总是正确选择

    Kubernetes 总是正确选择 一个好工具不在于它炒作或流行度,而在于它能多好地解决你问题并融入你生态系统。...如今,几乎所有的应用程序都可以被封装在容器执行。容器解决了很多问题,但也带来了新编排挑战。...团队需要从战略上考虑“Kubernetes 是我解决方案正确选择吗?”他们必须通过评估这个更广泛问题几个组成部分来做到这一点。 我团队构成是否适合 Kubernetes?...对 Kubernetes (K8s) 能力赞不绝口文章数不胜数,这不是我们要质疑。在许多情况下,K8s 是一个正确选择。...在后续文章,我将探讨一种在直接依赖 Kubernetes 情况下创建云原生应用程序方法。

    10210

    java swing 添加 jcheckbox复选框

    值得一提是在这七个构造方法,设计器(如果您使用了MyEclipse)使用JTable(TableModel dm)这个版本。...而一般情况使用JTable(Vector rowData,Vector columnNames)       在Java方法,如果参数需要传递接口,可以在调用方法时传递一个(匿名)对象,该对象是一个不具名实例...在详细说明之前先解释一下JTable显示原理:       首先是数据来源,您使用JTable构造方法,大部分重载参数即包含了数据,比如JTable(VectorrowData, Vector columnNames...)Vector保存数据(Vector相当于数组)。   ...其次是表格样式,表格将数据和如何显示数据(比如列数量、列名称、是否可编辑)保存在其数据模版,该模版实现自接口TableModel。   最后,表格(每一个单元格)可以设置渲染效果。

    3.3K00

    社团活动学分管理系统

    看见可选题目里有关于学分管理系统,考虑到时间紧迫,同时兼顾期末考试,故选择了这个社团学分管理系统。这里我也很感谢自己在校团委管理全校活动学分同学为我这次课设提供了真实学分数据。...private JComboBox comboBox_5; //“活动主办方”标签对应下拉列表 private JComboBox...文件数据导入到数据库,但是一定要注意必须把Excel文件格式转化为xls文件即2003版Excel文件格式。...6) 按照姓名查询学生活动信息:可以查询活动学生名为XXX所有学生活动信息数据(推荐这么查询,最好用学号来查询,毕竟可能出现重名情况)。下面是该功能截图。 ?...9) 总分查询:可以以学生为类别,查询该学生说有活动信息以及计算总社团活动学分。下面是该功能截图。 ? 10) 记录删除:可以把已经查询并在界面显示所有学生活动信息数据进行删除。

    5.2K30

    Java Swing 期末大作业-----图书借阅管理系统

    book表 (3)ReaderDao 类实现操作数据库reader表 (4)BookTypeDao 类实现操作数据库bookType表 (5)ReaderTypeDao 类实现操作数据库readerType...如果系统管理员想要删除某个用户(长期登录,或者登陆异常)用户信息,那么就需要在后台中写一个删除用户功能,根据用户名进行删除(前提:数据库对应字段设为唯一)。...,如表3所示 数据库具体表相关信息 读者类别信息表用于存储读者基本信息,如表4所示 数据库具体表相关信息 借阅图书信息表用于存储借阅图书关键信息,如表5所示 数据库具体表相关信息...用户表用于存储系统用户信息,如表6所示 数据库具体表相关信息 子项目:图书借阅系统应用 数据库操作具体表相关类,如图7所示 具体表数据对应实体类(pojo),如图8所示...return ret; } //查询功能 public static List selectBook(String s1, String s2){ //根据下拉框选择

    3.7K40

    脏读,不可重复读,幻读

    2.现在我们使用其中一个用户,往表格里插入一条数据,但是执行commit命令,会发现另一个用户也能读取到这个未提交数据: ? ? ?...2.现在我们使用其中一个用户,修改表格里一条数据,但是执行commit命令,会发现另一个用户不能读取到这个未提交数据: ? 3.但是用户B执行commit命令后就不一样了: ?...幻读现象: 幻读是指当事务不是独立执行时发生一种现象,例如第一个事务对一个表数据进行了修改,比如这种修改涉及到表“全部数据行”。...同时,第二个事务也修改这个表数据,这种修改是向表插入“一行新数据”。...2.现在我们使用其中一个用户,往表格了里表格里插入一条数据,但是执行commit命令,同样会发现另一个用户不能读取到这个未提交数据: ?

    1.7K10

    java swing一篇轻松学习(高考后可以自学)

    关 闭窗口 小部件、标题等) setIconImage(Image image) 设置要作为此窗口图标显图像 setJMenuBar( JMenuBar menubar) 设置此窗体菜单栏 setLayout...cmb=new JComboBox(); //创建JComboBox cmb.addItem("--请选择--"); //向下拉列表添加一项 cmb.addItem("长命百岁"...c) 如果在子菜单层次结构存在指定组件,则返回 true isPopupMenuVisible() 如果菜单弹出窗口可见,则返回 rue isSelected() 如果菜单是当前选择(即高亮显示...getRowCount() 返回 JTable 可以显示行数(给定无限空间) getRowSorter() 返回负责排序对象 getSelectedColumn() 返回第一个选定列索引,如果没有选定列...位置单元格值 isEditing() 如果正在编辑单元格,则返回 true selectAll() 选择所有行、列和单元格 setColumnSelectionInterval(int index0

    9.4K10

    选择使用Lucene6大原因

    选择使用Lucene6大原因      Lucene是开放源代码全文搜索引擎工具包,凭借着其强劲搜索功能和简单易用实现,在国内已经很普及,甚至一度出现了言搜索必称Lucene盛景...; 第三类是以中文分词为中心介绍;      任何一个软件,包括所有伟大软件都有这样或者那样“缺点”和各自适用领域,Lucene也例外。...选择使用Lucene6大原因: 6、Lucene 内建不支持群集。         Lucene是作为嵌入式工具包形式出现,在核心代码上没有提供对群集支持。...对于在单个文档term出现比较多情况,搜索速度会变得很慢。...A、Lucene没有使用接口Interface,比如Query 类( BooleanQuery, SpanQuery, TermQuery...)

    1.2K20

    人生选择

    亚里士多德认为这三种关系只有第三种才能叫爱,他认为基于愉悦或功利相互关系,有一个取舍条件,这种关系是一种有来有往(quid pro quo)关系,是一种交易关系,这种交易关系背后不断思考公平问题...但在实际生活很难达到这个理想状态,所以我今天想说一点我其他思考,就是人生,包括爱情和职业等问题在内,都是一个选择问题。 我们先岔开这个话题,说点别的事情。...如果那天不去那家公司面试,甚至接到面试电话时候正在开会而挂断,今天就不会在这件办公室里,自己也不会在这个行业打拼。 如果那天参加那个聚会,就不会今天有那么多爱恨情仇。...遗憾,是人生一个永恒命题。 所以人生不必遗憾,凡是发生定是要发生。既然自己选择了,就这样走下去,至于是晴空万里还是阴云密布,都接受好了。因为,这是自己选择。...回到起初那个问题上去,选择性伴侣也好,选择商业伙伴也罢,还是最终选择了精神伴侣,都是自己选择,别人其实很难指手画脚,只要你自己愿意,后悔,乐在其中就好了。

    1.2K40

    被动是最好主动选择是最好选择(投资随想四则)

    了解了区块链,就自以为懂得了区块钱链投资,初生牛犊不怕虎,甚至不知道有虎存在,掉坑里面了,但不知道自己在坑里面,四处碰壁,投资完全是看运气且不自知。 第二阶段,衣带渐宽终悔,为伊消得人憔悴。...有足够多投资经历,吃了足够多亏,有足够强风险意识,能正确认识自己投资水平,能正确对待赚钱这件事,能冷静分析投资项目,能真正读懂投资大师建议。...被动是最好主动,选择是最好选择。 苏格拉底说:我唯一知道,就是我什么都不知道。 写作对投资危害 ---- 当你认知不及格时候,你是赚不到钱。...穷投资者恶性循环 ---- 越是资金量小投资者,总想以小博大,总想博短线,总是担心自己还未建好仓位牛市就来了,总想快速赚钱,焦虑心情会让你投资失去理性,最终结果就是越博越亏,越亏越博,恶性循环...张三九延迟满足三要素很有借鉴意义: 一、长线投资代币不要超过自己能力边界,全力呵护内心平衡; 二、投资要得到家人理解和支持; 三、提升场外赚钱能力,不放过任何一次机会,想尽一切办法赚钱。

    71940

    关于React状态保存研究

    这点在页面存在多个TAB页或者多条件筛选时候体验会更加明显,这时候我又不得不点击我之前选择页签,重新选择筛选条件,然后再进行搜索。...因此,在这种情况下,保存之前状态显得尤为亟待解决,下面是自己实践出来几种方法,做一下分享,同时希望和各位一起探讨,看能不能有什么更好办法。...可以看到,当从详情页面返回时,点击激活状态依旧可以保存,但是列表滚动高度并不能够保存,关于高度恢复在下面会讲到。 解决方案二:当前页面弹窗 不占用路由,在当前页面直接已弹窗形式加载详情页面。...看上去效果十分好,既能保存状态,也能保存滚动条高度。...解决方案三:本地存储/redux数据仓库/参数传递 我把这三种方案归结为一种,因为实际上是在离开列表组件时候保存当前状态,然后在回到页面的时候根据之前保存状态来进行现场恢复而已。

    4.3K40

    1小时学会通过Java Swing Design设计java图形化

    ---- 1、项目创建 使用eclipse直接创建一个java空项目即可,唯一要注意就是创建【java】时候不是点击【class】而是创建【JFrame】,通过【JFrame】才能使用设计工具【Design...这里点【other】因为【JFrame】在这个选项栏。...JLabel 标签 JButton 按钮 JTextArea 文本区 JTextField 文本框 JRadioButton 单选按钮 JCheckBox 复选框 JPasswordField 密码框 JComboBox...下拉列表框 JList 列表 JTable 表格 画有些乱,但是基本上一眼就能看出来是啥:  表格JTable: JPanel设置上下布局,JScrollPane设置,这样才能显示table标题列...e) { int i = table.getSelectedRow(); if (i==-1) { JOptionPane.showMessageDialog(null,"请选择删除

    1.1K10

    java winform开发之JTable全攻略

    ,然后右击,选择“表内容”就可以进行表格行和列编辑了,不过通常情况下,表格内容都是动态生成,所以在控件上直接编辑它内容意义是不大,当然,做DEMO时比较有用。...,要传入两个Vector实例,第一个是保存数据Vector,第二个参数是保存列头信息Vector,在 示例dataVector是通过遍历一个list对象而动态填充内容,在实例化并初始化好Vector...后,只要调用JTablesetModel方法,就可以将列头及数据信息显示在表格啦。...2)怎样添加行点击事件 首先,在JTable设计视图中先选中JTable,然后右击,在事件弹出菜单依次选中"mouse-click”就可以捕捉表格点击事件了,在这个事件监听方法,会传入一个java.awt.event.MouseEvent...} } 事实证明,这个类非常好用,特别是它customObj方法,能将一个对象保存在行内单元格,在进行行点击响应时候,再提取了出来,非常强大,示例: CustomTableCell idCell

    1.2K30
    领券