2009-10-20 105 views
9

jCombobox中setEditable()和setEnabled()之间的区别是什么?组合框是否可编辑,但未启用和其他方式?你会在哪种情况下使用哪种方法?JCombobox可编辑启用

你能想象一种情况,你会setEnabled(false)与setEditable(true)一起做setEnabled(false)吗?

回答

20

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只允许从下拉列表中选择值,并且用户不能与其交互。

一个情况下,你可能有一个JComboBoxsetEnabled(false)setEditable(true)将是你想要一个JComboBox,使文字输入,但形式是在一个状态,其中JComboBox的价值是不适用的。您通常会采取一些行动,在JComboBox确实适用后,您可以致电setEnabled(true)

例如,如果您有类似学生住房形式的东西,可能会出现类似“您是否需要停车位?”的问题。与JCheckbox。汽车品牌有JComboBox,车牌号码有JTextFied。您可能会预先安装JComboBox与普通汽车品牌 - 福特,雪佛兰,丰田,本田等 - 但决定你也想让它是可编辑的,以防某人拥有像兰博基尼这样的东西(并留在学生住房 - 是的,没错...)。除非用户选择JCheckBox表示他们需要停车位,否则不需要汽车品牌和车牌号码的值。您将向JCheckBox添加一个侦听器,该侦听器在JComboBoxJTextField被选中时将调用setEnabled(true),当它不被选择时将调用setEnabled(false)

+0

不可编辑的JComboBox在字段中显示所选项目,但不能修改选择内容。 http://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html#setEditable-boolean- – arley 2014-06-18 23:46:00

1

SetEnable() - 启用组合框,以便可以选择项目。

SetEditable() - 确定JComboBox字段是否可编辑。

7

如果您致电setEditable(true),JComboBox的文本字段变为可编辑状态,除了从列表中选择项目外,还允许用户使用键盘输入文本。

如果您致电setEnabled(false),整个控件将被禁用,从而阻止用户与其进行交互。

相关问题