首页
学习
活动
专区
工具
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.8K31

    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

    数据库系统课程设计 --- 人事管理系统(超详细)

    在看该文章之前,我希望大家能够从头慢慢看下去,而不是直接去复制代码,该 课程设计其实可以学到一些东西的,说不定以后也许能够用上来的 前言 -- jar 包的导入 下面我是在 IDEA 中实现的代码,...从零开始操作流程如下 1)先去 Maven Repository: Search/Browse/Explore 网站,搜索 MySQL,如下图 上面第一个是较新的 版本,下面有旧版本,然后我选择的是下面那个...sID 字段,指示该部门的负责人 dIntro:部门简介,默认值为空 外键约束:sID 字段引用 staff 表中的 sID 字段,确保每个部门都有一位主管员工。...代码实现 这里我要重点讲一下,下面的密码不代表我在那个登录界面进入的密码,我们只需要输入当前工号即可登录,这个密码是经过巧妙设计加密的,大家后面可以仔细看看 管理员工号 :10001,登录密码:10001...,我直接列出我当前的文件使用情况,大家可以看看 先说明一下,上面的图标我是在该 Yesicon 网站找的,大家也可以设定自己喜欢的图标或者图片什么的,具体使用如下: 我这里是新建了一个 source 文件夹来保存一些东西

    24610

    脏读,不可重复读,幻读

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

    1.7K10

    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.9K40

    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.6K10

    不选择使用Lucene的6大原因

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

    1.2K20

    人生中的选择

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

    1.3K40

    关于React中状态保存的研究

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

    4.3K40

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

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

    72140

    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.2K10

    高级Swing 组件

    如果你允许对列表框中的项目进行多次选择,那么用户就可以选定框中项目的任何组合。...跟踪列表选择事件 在介绍列表的后半部分中,我们还要讲述一些需要更高操作技巧的更加复杂的列表形式,它们是: n 很长的列表 n 内容经常变化的列表 n 不包含字符串的列表...但是,列表框中选择的集合始终都是固定的。那么我们应该如何在列表框中添加或者删除项目呢?让人有些奇怪的是,JList类中没有任何方法可以用来实现这些操作。相反,你必须进一步了解列表组件的内部设计情况。...如果列表的单元格的大小不固定,那么该组件也不必须实现gePreferredSize方 * 法。...当JTable需要查看某个值时,过滤器模型便计算实际的行索引,并且从模型中获取该值。

    6910
    领券