【发布时间】:2009-10-20 12:04:20
【问题描述】:
jCombobox 中的 setEditable() 和 setEnabled() 有什么区别?组合框可以编辑但不启用或其他方式吗?在什么情况下你会用什么方法?
你能想象一下你会同时使用 setEnabled(false) 和 setEditable(true) 的情况吗?
【问题讨论】:
jCombobox 中的 setEditable() 和 setEnabled() 有什么区别?组合框可以编辑但不启用或其他方式吗?在什么情况下你会用什么方法?
你能想象一下你会同时使用 setEnabled(false) 和 setEditable(true) 的情况吗?
【问题讨论】:
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 的值的状态不适用。一旦它确实适用,您通常会有一些操作会在JComboBox 上调用setEnabled(true)。
例如,如果您有学生住房表格之类的东西,表格上可能会出现“您需要停车位吗?”之类的问题。带有JCheckbox。汽车品牌有JComboBox,车牌号有JTextFied。您可能在 JComboBox 中预先填充了常见的汽车品牌 - 福特、雪佛兰、丰田、本田等 - 但如果有人拥有兰博基尼之类的东西(并且留在学生宿舍-是的,对...)。除非用户选择JCheckBox 表示他们需要停车位,否则不需要汽车品牌和车牌号的值。您可以向JCheckBox 添加一个侦听器,当它被选中时,它会在JComboBox 和JTextField 上调用setEnabled(true),在它未被选中时调用setEnabled(false)。
【讨论】:
如果您调用setEditable(true),JComboBox 的文本字段将变为可编辑状态,除了从列表中选择项目外,还允许用户使用键盘键入文本。
如果您调用setEnabled(false),整个控件将被禁用,从而完全阻止用户与之交互。
【讨论】:
SetEnable() - 启用组合框以便可以选择项目。
SetEditable() - 确定 JComboBox 字段是否可编辑。
【讨论】: