10

jCombobox 中的 setEditable() 和 setEnabled() 有什么区别?组合框可以编辑但不启用或其他方式吗?在什么情况下你会使用什么方法?

你能想象一个你将 setEnabled(false) 和 setEditable(true) 一起做的情况吗?

4

3 回答 3

23

setEditable(boolean)确定JComboBox除了通过下拉选择值之外是否允许文本输入。

setEnabled(boolean)确定是否JComboBox可以与之交互。如果未启用,则显示为灰色。

AJComboBox可以具有这些属性的任意组合 -

  • setEditable(true)+ setEnabled(true)=JComboBox除了下拉值之外还允许文本输入,并且用户可以与之交互。
  • setEditable(false)+ setEnabled(true)=JComboBox只允许选择下拉列表中的值,并且用户可以与之交互。
  • setEditable(true)+ setEnabled(false)=JComboBox除了下拉值外,还允许文本输入,但用户无法与之交互。
  • setEditable(false)+ setEnabled(false)=JComboBox仅允许选择下拉列表中的值,并且用户无法与之交互。

一种情况,您可能有一个JComboBoxwithsetEnabled(false)并且setEditable(true)您想要一个JComboBox允许文本输入的地方,但表单处于JComboBox不适用的值的状态。您通常会采取一些行动,setEnabled(true)一旦JComboBox它确实适用。

例如,如果您有学生住房表格之类的东西,表格上可能会出现“您需要停车位吗?”之类的问题。带一个JCheckbox。有一个JComboBox汽车品牌和一个JTextFied车牌号。您可能已经JComboBox预先填充了常见的汽车品牌 - 福特、雪佛兰、丰田、本田等 - 但决定您还希望允许它可编辑,以防有人拥有像兰博基尼这样的东西(并且住在学生宿舍 -是的,对...)。JCheckBox除非用户选择表示他们需要停车位,否则不需要汽车品牌和车牌号的值。您将添加一个侦听器,该侦听器JCheckBox将在它被选中时调用setEnabled(true)JComboBox而当它未被JTextField选中时。setEnabled(false)

于 2009-10-20T13:14:59.620 回答
7

如果您调用setEditable(true),JComboBox 的文本字段将变为可编辑状态,允许用户使用键盘输入文本以及从列表中选择一个项目。

如果您调用setEnabled(false),则整个控件将被禁用,从而完全阻止用户与之交互。

于 2009-10-20T12:08:45.213 回答
1

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

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

于 2009-10-20T12:06:31.770 回答