Java 禁用后仍可以从JComboBox中选择
我在设置JComboBox时遇到问题。在separte面板上为用户提供了一些选项,用于确定是否应启用/禁用JComboBox-我的问题是,即使禁用了JComboBox,用户仍然可以从中进行选择(组合框变灰时禁用)!JComboBox使用自定义TableCellRenderer和自定义DefaultCellEditor。JComboBox也是JTable行中的一个单元格/列 下面是代码的细目: *JTable的编制人* *设置组合框*Java 禁用后仍可以从JComboBox中选择,java,swing,jcombobox,tablecellrenderer,Java,Swing,Jcombobox,Tablecellrenderer,我在设置JComboBox时遇到问题。在separte面板上为用户提供了一些选项,用于确定是否应启用/禁用JComboBox-我的问题是,即使禁用了JComboBox,用户仍然可以从中进行选择(组合框变灰时禁用)!JComboBox使用自定义TableCellRenderer和自定义DefaultCellEditor。JComboBox也是JTable行中的一个单元格/列 下面是代码的细目: *JTable的编制人* *设置组合框* public void setupUserCombo(){
public void setupUserCombo(){
TableColumn col = getColumnModel().getColumn(0);
List<String> comboUsers = new String["Adam", "Ben"]
MyComboBoxRenderer jComboBox = (new MyComboBoxRenderer((String[])values.toArray(comboUsers ));
col.setCellEditor(new MyComboBoxEditor((String[])values.toArray(new String[0])));
col.setCellRenderer(jComboBox);
repaint();
}
*DefaultCellEditor*
public class MyComboBoxEditor extends DefaultCellEditor {
private static final long serialVersionUID = 1L;
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
任何关于我做错了什么的指点都将不胜感激
谢谢,- 了解
- 不要将
存储在JComponents
中,那么XxxTableModel
中最后选择的值将作为JComboBox
字符串值存储在XxxTableModel
- 了解
- 不要将
存储在JComponents
中,那么XxxTableModel
中最后选择的值将作为JComboBox
字符串值存储在XxxTableModel
在这里,您所做的只是渲染一个禁用的JComboBox,但这并不阻止编辑,它只是渲染一个禁用的JComboBox。另请参见如果要禁用表格中单元格的编辑,则应覆盖
在这里,您所做的只是渲染一个禁用的JComboBox,但这并不阻止编辑,它只是渲染一个禁用的JComboBox。另请参见非常好-感谢您的帮助!问题是我已经在重写模型中的方法,以便在选择组合框时始终返回true。现在修复为仅在启用时返回true。非常好-感谢您的帮助!问题是我已经在重写模型中的方法,以便在选择组合框时始终返回true。现在已修复为仅在其启用时返回true。
public class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
private static final long serialVersionUID = 1L;
public MyComboBoxRenderer(String[] items) {
super(items);
repaint();
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
setSelectedItem("");
if (isSelected) {
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSelectedItem(value);
return this;
}
}
public class MyComboBoxEditor extends DefaultCellEditor {
private static final long serialVersionUID = 1L;
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}