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

如何动态地在JTable的每一行中放置不同的JComboBox

在JTable的每一行中放置不同的JComboBox可以通过自定义TableCellRenderer和TableCellEditor来实现。下面是一个实现的步骤:

  1. 创建一个自定义的TableCellRenderer类,继承DefaultTableCellRenderer,并重写getTableCellRendererComponent方法。在该方法中,根据行和列的索引,创建并返回不同的JComboBox作为渲染组件。
代码语言:txt
复制
class ComboBoxRenderer extends DefaultTableCellRenderer {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if (value != null) {
            JComboBox comboBox = new JComboBox((Object[]) value);
            return comboBox;
        }
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
}
  1. 创建一个自定义的TableCellEditor类,继承DefaultCellEditor,并重写getTableCellEditorComponent方法。在该方法中,根据行和列的索引,创建并返回不同的JComboBox作为编辑组件。
代码语言:txt
复制
class ComboBoxEditor extends DefaultCellEditor {
    public ComboBoxEditor(Object[] items) {
        super(new JComboBox(items));
    }
    
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        JComboBox comboBox = (JComboBox) super.getTableCellEditorComponent(table, value, isSelected, row, column);
        comboBox.setSelectedItem(value);
        return comboBox;
    }
}
  1. 在使用JTable时,将自定义的TableCellRenderer和TableCellEditor应用到需要放置JComboBox的列上。
代码语言:txt
复制
JTable table = new JTable(data, columnNames);
table.getColumnModel().getColumn(columnIndex).setCellRenderer(new ComboBoxRenderer());
table.getColumnModel().getColumn(columnIndex).setCellEditor(new ComboBoxEditor(items));

其中,data是表格的数据模型,columnNames是列名数组,columnIndex是需要放置JComboBox的列的索引,items是一个数组,包含了每一行中不同的JComboBox的选项。

这样,每一行中的JComboBox就可以根据需要动态地显示不同的选项了。

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

相关·内容

java swing 添加 jcheckbox复选框

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

3.2K00

脏读,不可重复读,幻读

脏读现象: 默认事务隔离级别下,我们是无法读取到未提交数据能够读取到未提交数据事务隔离级别下,才会出现脏读现象。...不可重复读现象主要是指,一个事务结束前(执行commit或rollback前),进行两次或多次读取同一个数据会出现不同结果,所以称为不可重复读,因为重复读取就会出现这种数据不一致情况。...幻读现象: 幻读是指当事务不是独立执行时发生一种现象,例如第一个事务对一个表数据进行了修改,比如这种修改涉及到表“全部数据行”。...同时,第二个事务也修改这个表数据,这种修改是向表插入“一行新数据”。...不可重复读和幻读区别: 不可重复读强调是每次读取是相同位置数据,且该数据另一个事务下被修改。注重是修改。这个位置指的是哪一行、哪一个字段数据。

1.7K10

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

第三模块:类型信息管理 读者类型信息管理   我们借阅书籍,因为读者身份或者类别不同,读者借阅书籍肯定有不同规则,参照一般大学图书馆规则,学生能最多借3本书,3个月内归还,老师最多能借5本书,5...个月内归还,所以因为读者身份不同借阅书籍规则也不同,所以我们要对读者类型信息进行分类,用户可以对读者类型信息进行增删改查操作。...点击删除,删除指定类型编号图书类型信息,点击退出,正常退出界面。 9.图书借阅功能实现    表单显示所有已经被借走书籍信息,点击借阅,将借阅信息进行增加到bookBorrow。...10.图书归还功能实现    表单显示所有已经被借走书籍信息,点击归还,将借阅信息进行删除。点击关闭页面正常退出。...11.用户增加功能实现    文本框输入用户名和密码,点击添加,将对应信息放到user类插入到user表。 用户名都是唯一,不能输入已经存在过用户名。

3.2K40

java swing 实现数据库增删查改

最近一个实习生问我,swing好难啊,就是jtable增删查改都做不出来了,我也好久没有做了,各种文档,各种查找,各种百度终于是完成了一个小项目,也就是所说增删除查改。不废话了,上代码。...修改,删除面板 package ui; import java.awt.BorderLayout; public class QueryPanel extends JPanel { private JTable...(new Object[][] {}, new String[] { "用户编号", "用户名", "所属部门", "出生日期" }); // 将数据绑定到对象 table.setModel...cob = new JComboBox(deptList.toArray()); // 创建一个使用下拉框代替编辑框单元格对象 DefaultCellEditor dept = new...= userDao.queryAll(); // 遍历一条数据,添加到model int i = 0; for (User user : list) { //

2.7K31

Java-GUI 编程之 JList、JComboBox实现列表框

简单列表框 使用JList或JComboBox实现简单列表框步骤: 创建JList或JComboBox对象 JList(final E[] listData):创建JList对象,把listData数组每项内容转换成一个列表项展示...extends E> listData):创建JList对象,把listData数组每项内容转换成一个列表项展示 JComboBox(E[] items): JComboBox(Vector...JScrollPane,并将JScrollPane放置到box listBox.add(new JScrollPane(bookList)); listBox.add...使用JList和JComboBox时,除了可以使用jdk提供Model实现类,程序员自己也可以根据需求,自己定义Model实现类,实现对应方法使用。...和DefaultComboBoxModel 前面只是介绍了如何创建 JList 、 JComboBox 对象, 当 调用 JList 和 JComboBox构造方法时时传入数组或 Vector 作为参数

3.4K11

java swing项目桌面软件还是蛮香,至少有了我自己桌面软件|Java 开发实战

2、先将JTable加入jscrollpane(滚动条),然后将滚动条加入到对应控件(Jpanel或者是Jframe).java swing 开发中加入滚动条是很常见操作,所以这种方式加入表格还是很推荐...JTable显示模块去刷新从1-6行所有数据,所以说比如你更新了第一行数据,而你用两个参数是1,4.那么恭喜你,你更新JTable无法实现,因为他只更新从第二行开始到第五行数据。...方法是JTable决定显示类型主要依据,源码返回默认是object.class,这就意味着我们jtable是true或false或其他类,在这里都会返回object.class,那么jtable...通过返回不同类来调用不同渲染器,现在我们不通过返回类方式来渲染,而是自己定义一个渲染器,然后通过JTable提供方法设定用该渲染器渲染该单元格!...设置完了编辑器,我们最终要是只渲染器,就是JTable最终如何显示问题。和上面的那个一样。

15710

java winform开发之JTable全攻略

列表在任何一门开发语言中都占有非常重要地位,.Net中有GridView,extjs中有GridPanel。。。,而在java Swing,它名字叫JTable。...后,只要调用JTablesetModel方法,就可以将列头及数据信息显示表格啦。...2)怎样添加行点击事件 首先,JTable设计视图中先选中JTable,然后右击,事件弹出菜单依次选中"mouse-click”就可以捕捉表格点击事件了,在这个事件监听方法,会传入一个java.awt.event.MouseEvent...,一行至少有一个单元格是我所定义这个对象实例,这样,捕捉事件时候,只要我从触发事件行中提取到这个单元格对象出来,就解决了行标记问题了。...,当然,表格中新增一行远不止上面示例代码这么简单,起码,大部分情况下是需要对行标识进行比对,看是否存在关键字相同一行再作处理,像我所做商品添加操作,如果请求新添加商品项已经存在于表格,那么事实上只需要将表格相应商品行数量加一就可以了

1.2K30

Java Swing JTable

1 简介 JTable用于显示和编辑常规二维单元格表。有关面向任务文档和使用JTable示例,请参见Java教程如何使用表。...); } }; JTable表=新JTable(dataModel); JScrollPane scrollpane =新JScrollPane(table); JTable通常放置JScrollPane...源分发演示区域中“ TableExample”目录提供了一些JTable使用情况完整示例,涵盖了如何使用JTable提供从数据库获取数据可编辑视图以及如何修改显示列。...默认情况下,列可能会在JTable重新排列,以使视图列以与模型不同顺序出现。这一点根本不影响模型实现:对列进行重新排序时,JTable在内部维护列新顺序并在查询模型之前转换其列索引。...下面显示了如何JTable坐标转换为基础模型坐标: Int []选择= table.getSelectedRows(); For(int i = 0; i selection.length; i

4.9K10

社团活动学分管理系统

文件数据导入到数据库,但是一定要注意必须把Excel文件格式转化为xls文件即2003版Excel文件格式。...2) 按照起始认证时间查询学生活动信息:此功能是可以查询认证时间起始认证时间之后(包含起始认证时间)所有学生活动数据信息。下面是该功能截图。 ?...3) 按照终止认证时间查询学生活动信息:此功能是可以查询认证时间终止认证时间之前(包含终止认证时间)所有学生活动数据信息。下面是该功能截图。 ?...4) 按照起始认证时间与终止认证时间查询学生活动信息:此功能是可以查询认证时间起始认证时间与终止认证时间之间(包含起始认证时间与终止认证时间)所有学生活动数据信息。下面是该功能截图。...9) 总分查询:可以以学生为类别,查询该学生说有活动信息以及计算总社团活动学分。下面是该功能截图。 ? 10) 记录删除:可以把已经查询并在界面显示所有学生活动信息数据进行删除。

5.2K30

实践作业三 结对项目

Month = new JComboBox(); //月份下拉列表框 JComboBox Year = new JComboBox(); //年份下拉列表框 JLabel Year_l = new JLabel...JPanel pane_day = new JPanel(); //放置日期面板 JPanel pane_parent = new JPanel(); //放置以上两个面板 //定义方法绘制面板 public...cal.setTime(dt); String week[] = { “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六” }; int day = 0; //day存放某个月份天数...int day_week = 0; //用来存放某个月第一天是星期几数值 //–将星期添加到前7个按钮 for (int i = 0; i < 7; i++) { button_day[i].setText...static void main(String[] args) { CalenderTrain ct = new CalenderTrain(); } } } 五、测试结果 六.问题及心得: 本次实践

89610

Java一分钟之-Swing组件:JTable, JTree, JTextArea

Java Swing 提供了丰富组件库,其中JTable、JTree和JTextArea用于展示数据和用户输入。本文将深入浅出地介绍这些组件,常见问题,易错点以及如何避免,同时提供代码示例。 1....JTable JTable用于展示二维数据,如表格形式数据。它可以从数组、列表或模型获取数据。...避免方法:使用JScrollPane包裹JTable。 2. JTree JTree用于展示层次结构数据,如文件系统或组织结构。...避免方法:创建JTextArea时设置初始文本。 结语 JTable、JTree和JTextArea是Swing展示和处理数据重要组件。...理解它们用法,注意常见设计模式和错误,可以帮助你创建出功能丰富用户界面。在实践,结合不同布局管理器和组件,你可以构建出各种复杂界面。

9110

如何在Java中使用Table

大家好,我是小面,今天给大家分享一下java如何运用Table。 Java,表用于将数据排列成列和行。列是表水平排列空间,而行是表垂直排列空间。...列和行之间交点称为单元格,用于保存单条数据。 Java,开发人员可以使用JTable方法在其应用程序创建表。JTable是从JComponent类继承Swing组件。...如何在Java创建表 要创建表,需要创建JTable实例。...以下是如何使用数组Java创建表: JTable(Object[][] rowData, Object[] columnNames) 下面是一些示例代码,展示了如何用Java创建一个表并填充数据:...(2).setPreferredWidth(200); 小结 本编程教程,程序员学习了如何使用JTable或表模型Java创建表。

2K40

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

) 设置按钮键盘快捷键,所设置快捷键实际操作时需要结合 Alt 键进行实现 void setPressedIcon(Icon icon) 设置按下按钮时图标 void setSelectedIcon...cmb=new JComboBox(); //创建JComboBox cmb.addItem("--请选择--"); //向下拉列表添加一项 cmb.addItem("长命百岁"...list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(list); //滚动面板显示列表...getRowCount() 返回 JTable 可以显示行数(给定无限空间) getRowSorter() 返回负责排序对象 getSelectedColumn() 返回第一个选定列索引,如果没有选定列...到 index1 之间(包含两端)行 setTableHeader(JTableHeader tableHeader) 将此 JTable 所使用 tableHeader 设置为 newHeader

9.3K10
领券