【发布时间】:2012-11-04 13:00:57
【问题描述】:
我无法将 javax.swing.JComboBox 放入 org.jdesktop.swingx.JXTable 单元格。我浏览了之前关于这个问题的问题,但没有帮助。
我试过了:
colModel.getColumnExt(HDTableAdapter.STATUS).setCellEditor(editorCB);
colModel.getColumnExt(HDTableAdapter.STATUS).setCellRenderer(rendererCB);
class comboBoxRenderer extends JComboBox implements TableCellRenderer {
public comboBoxRenderer(String[] items) {
super(items);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSelectedItem(value);
return this;
}
}
class comboBoxEditor extends DefaultCellEditor {
public comboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
但在这种情况下,我在单元格内得到了一个不可编辑的 ComboBox。
【问题讨论】:
-
请学习java命名约定并坚持下去
-
你为什么感到惊讶? JComboBox 默认情况下不可可编辑...
-
一个评论追逐另一个
刚刚注意到 JXTable 位:dont 实现一个渲染器(曾经在 SwingX 中!),而不是子类 ComponentProvider 用于不受支持的组件类型(有测试部分xxVisualCheck中的示例,xx == Renderer或== JXTable(可能,不记得确切) -
不可编辑,我的意思是当我点击它时,列表没有显示,所以我无法更改值。
-
你明白“约定”这个词吧?然后学习特定于 java 的那些 ;-)
标签: java swing jtable jcombobox