这是一个相当普遍的问题,我用过的解决方案和我后来搜索发现的差不多。其中一个实现了带有< code>JLabel的< code>ListCellRenderer,它根据当前选择的索引启用或禁用自身:
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
UIDefaults defaults = UIManager.getDefaults();
Color fc;
if (index == 1) {
setEnabled(false);
fc = defaults.getColor("Label.disabledForeground");
setFocusable(false);
} else {
// fc = defaults.getColor("Label.foreground");
fc = list.getForeground();
setEnabled(list.isEnabled());
setFocusable(true);
}
setForeground(fc);
setBackground(isSelected ? list.getSelectionBackground() : list
.getBackground());
return this;
}
问题是,尽管列表项在视觉上显示为禁用,但尽管调用了< code>setFocusable,它仍然可以被选中。我该如何禁用它?
您需要某种方法阻止组合框设置无法从中选择的项。
我能想到的最简单的方法是将选择的变化捕获在模型本身中。
public class MyComboBoxModel extends DefaultComboBoxModel {
public MyComboBoxModel() {
addElement("Select me");
addElement("I can be selected");
addElement("Leave me alone");
addElement("Hit me!!");
}
@Override
public void setSelectedItem(Object anObject) {
if (anObject != null) {
if (!anObject.toString().equals("Leave me alone")) {
super.setSelectedItem(anObject);
}
} else {
super.setSelectedItem(anObject);
}
}
}
现在,这是一个快速的黑客来证明这一点。您真正需要的是以某种方式将某些项
标记为不可选择。我能想到的最简单的方法是在项
中提供一个属性,例如是可选择的
。
如果做不到这一点,您可以构造一个特殊的 ComboBoxModel
,该模型维护一个单独的内部模型,其中包含对所有不可选项
的引用,以便可以使用快速 model.contains(item)
来确定该项是否可选。
1.我创建了一个JComboBox和Jtable。当用户从JComboBox中选择项目时,它们被添加到Jtable中 2.我不想让用户选择他以前在JComboBox中选择的项目 3.因此必须禁用选定的选项(不可选择)。我该怎么做?4.下面的代码在添加到JTable中后从JComboBox中删除该选定项,但我有兴趣禁用它
我有一个,其中有8个项目,我想显示其中的所有项目,但在特定条件下,用户只能选择前两个项目,因此我编写了程序,如果条件为真,用户选择任何其他选项,则会显示一个消息框,显示然后自动选择默认值。到现在为止,一直都还不错。 但现在的问题是,用户无法通过查看的选项来判断他可以选择哪些选项,因此我想做的是,如果条件为真,那么除前两个选项之外的所有选项都应该被禁用(或灰显或其他),这样用户就可以判断出您无法选择
问题内容: 我正在尝试结合2个jcombobox。1个组合框用于显示费用类别。第二个组合框正在从文本文件读取文件以显示产品类型。如果我更改第一个组合框,我希望第二个组合框将根据用户在第一个组合框中的选择进行更改。 我是否仍有可能从文本文件加载其他组合框?该子项将不是Arrays,而是与以前相同,因为它位于cboperson代码的底部。 编辑的代码: 问题答案: 例如
我在设置JComboBox时遇到问题。用户在separte面板上有几个选项,这些选项决定是否应该启用/禁用JComboBox——我的问题是,即使禁用了JComboBox,用户仍然可以从中进行选择(当组合框变灰时,它被禁用)!JComboBox使用自定义TableCellRenderer和自定义DefaultCellEditor。JComboBox也是JTable中一行的单元格/列。 下面是代码的细
我有一个JComboBox,其中的项是查询的结果。我在这里要做的是为每个项目设置一个标签和一个值。问题是,当我想要获取所选项目的值以创建新对象时,我无法。如你所见,我可以使用proveedorCombo获得标签。getSelectedItem()方法,但我不需要它,我需要ID,如何才能让它创建对象“a”?我试图将其放入“for bucle”中,如您所见,我显示了de-label和值,但我无法将该变
问题内容: 我正在寻找与该答案类似的解决方案,但更安全。我想禁用证书验证,但仅针对单个请求(这是我所需要的)。因此,它应该执行以下一项或多项操作 一个请求完成后,返回安全状态 仅禁用给定URL的验证 (也许)仅将不安全设置用于一个线程 附录 我真的想知道当我要一个更安全的解决方案时,与原始问题(得分+46)相比,这个问题(得分-2)出了什么问题。 有人可以解释吗? 解释为什么我需要这样做:有一个有