2009-10-20 73 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),整個控件將被禁用,從而阻止用戶與其進行交互。