Dan*_*Dan 15 java jtable jcombobox
我想将各个JComboBox放入JTable的每个单元格中.即.每个单元格的JComboBox内容并不相同.
我基本上希望能够只调用以下代码将一行JComboBox添加到JTable中.任何人有任何想法?谢谢
JComboBox cb1 = new JComboBox(...);
JComboBox cb2 = new JComboBox(...);
model.addRow(new Object[] {"Row name", cb1, cb2} );
JComboBox cb3 = new JComboBox(...);
JComboBox cb4 = new JComboBox(...);
model.addRow(new Object[] {"Row name 2", cb3, cb4} );
Run Code Online (Sandbox Code Playgroud)
我能找到的最接近的示例代码如下.但是对于单个列的JComboBox内容是相同的.不是我需要的解决方案.
TableColumn col = table.getColumnModel().getColumn(vColIndex);
col.setCellEditor(new MyComboBoxEditor(values));
Run Code Online (Sandbox Code Playgroud)
哪里
public class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
使用以下代码扩展JTable:
@Override
public TableCellEditor getCellEditor(int row, int column) {
Object value = super.getValueAt(row, column);
if(value != null) {
if(value instanceof JComboBox) {
return new DefaultCellEditor((JComboBox)value);
}
return getDefaultEditor(value.getClass());
}
return super.getCellEditor(row, column);
}
Run Code Online (Sandbox Code Playgroud)
这将为您获得值的每个组合框创建一个唯一的JComboBox单元格编辑器.
Cog*_*gsy -8
最简单的方法是实现自己的TableModel
public class MyModel extends AbstractTableModel {
List rows;
public int getRowCount() {
return rows.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int row, int column) {
return rows.get(row).getCol(col); //assuming your row "Object" has a getCol()
}
public Class<?> getColumnClass(int col) {
return Boolean.class;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
rows.get(rowIndex).getCol(columnIndex).setValue(aValue);
}
}
Run Code Online (Sandbox Code Playgroud)
将其加载到您的 JTable 中。如果您尚未替换布尔值的默认单元格渲染器,则由于 getColumnClass() 的实现,所有单元格都将呈现为复选框。这些复选框的所有用户输入均通过我们的 setValueAt() 收集。
| 归档时间: |
|
| 查看次数: |
42778 次 |
| 最近记录: |