jCombobox中setEditable()和setEnabled()有什么区别?组合框可以编辑但不启用和其他方式?在哪种情况下你会使用哪种方法?
你能想象一下你可以和setEditable(true)一起做setEnabled(false)吗?
答案 0 :(得分:22)
setEditable(boolean)
确定JComboBox
是否允许输入文字。
setEnabled(boolean)
确定JComboBox
是否能够与之互动。如果未启用,则显示为灰色。
JComboBox
可以混合使用这些属性 -
setEditable(true)
+ setEnabled(true)
= JComboBox
允许输入文字以及下拉值,用户可以与之互动。setEditable(false)
+ setEnabled(true)
= JComboBox
仅允许选择下拉值,用户可以与之互动。setEditable(true)
+ setEnabled(false)
= JComboBox
允许输入文字以及下拉值,但用户无法与之互动。setEditable(false)
+ setEnabled(false)
= JComboBox
仅允许选择下拉值,用户无法与之互动。 您可能拥有JComboBox
setEnabled(false)
和setEditable(true)
的情况将是您希望JComboBox
允许文本输入的位置,但表单处于某种状态其中JComboBox
的值不适用。一旦适用,您通常会在setEnabled(true)
上调用JComboBox
。
例如,如果您有类似学生宿舍的表格,表格上可能会有一个问题,例如“您是否需要停车位?”使用JCheckbox
。汽车品牌有JComboBox
,车牌号有JTextFied
。您可能预先填充了普通汽车品牌JComboBox
- 福特,雪佛兰,丰田,本田等等 - 但是如果有人拥有像兰博基尼这样的东西,你可以决定是否可以编辑它(并且是留在学生宿舍 - 是的,对...)。除非用户选择JCheckBox
表示他们需要停车位,否则不需要汽车品牌和车牌号码的价值。您可以向JCheckBox
添加一个监听器,该监听器会在setEnabled(true)
和JComboBox
选中JTextField
时调用setEnabled(false)
,而{{1}}调用{{1}}。
答案 1 :(得分:7)
如果您致电setEditable(true)
,JComboBox的文本字段将变为可编辑状态,除了从列表中选择项目外,还允许用户使用键盘键入文本。
如果您致电setEnabled(false)
,整个控件将被禁用,从而阻止用户与其进行交互。
答案 2 :(得分:1)
SetEnable() - 启用组合框以便可以选择项目。
SetEditable() - 确定JComboBox字段是否可编辑。