[英]can i add the combobox into particular cell of the JTable?
我想将组合框添加到JTable的单元格中。
model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);
但是我无法在单元格中找到组合框。 可以设置组合框吗?
您需要设置JTable的TableCellEditor。 最好搜索Java教程,但这是一个简短的解释。
JTable使用三个主要的类来工作:
1)TableModel:它的功能是说表有多少行和多少列并为Table的数据提供服务,它的主要方法是getValue(row,col)和setValue(value,row,col)。 并触发事件以通知JTable重新绘制。
2)TableCellRenderer:它的主要目的是在JTable的单元格中绘制组件。 该组件仅涂有油漆:无效! 如果绘制JComboBox,则单击它不会消失;如果绘制JCheckbox,则不会选择/取消选择。
3)TableCellEditor:它的主要目的是在JTableCell内绘制一个组件以编辑单元格的值。 它接收事件并决定何时开始编辑,然后调用getTableCellEditorComponent方法以返回编辑器组件。 返回的组件必须具有启动事件,以便TableCellEditor知道何时停止编辑并获取值,并使用它来调用TableModel.setvalue ...或取消编辑。
因此,要在JTable中显示JComboBox,必须创建自己的TableCellEditor,如果您以前没有做过,那么就不容易。
查看此Java教程,并在此页面中搜索“使用组合框作为编辑器”
尝试以下操作:它对我有用。.单击单元格以查看组合框。
private void comboloader() {
try {
TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
JComboBox comboBox = new JComboBox();
comboBox.removeAllItems();
try {
comboBox.addItem("Item 1");
comboBox.addItem("Item 2");
comboBox.addItem("Item 3");
} catch (NullPointerException e) {
} catch (Exception e) {
e.printStackTrace();
}
gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
} catch (Exception e) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.