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

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

相关·内容

5分19秒

16_ClickHouse入门_开发中引擎的选择

7分27秒

第十八章:Class文件结构/10-字节码数据保存到excel中的操作

19分50秒

151_尚硅谷_实时电商项目_保存双流Join后的数据到ClickHouse中1

25分21秒

152_尚硅谷_实时电商项目_保存双流Join后的数据到ClickHouse中2

29分52秒

059_尚硅谷_实时电商项目_将采集到的数据批量保存到ES中业务实现

44秒

多医院版云HIS源码:标本采集登记

15分57秒

32-尚硅谷-尚优选PC端项目-选择搭配中复选框选中状态的套餐价联动效果

1分28秒

C语言 | 让用户选择1或2输出max或min

-

什么才是真正的华为鸿蒙?相信我,99%的人都理解错了!

56秒

PS小白教程:如何在Photoshop中给灰色图片上色

-

全球惊现“缺芯”潮,产业链供应不足,芯片行业将迎来大挑战!

2分3秒

小白教程:如何在Photoshop中制作真实的水波纹效果?

领券