2009-10-20 5 views
9

Was ist der Unterschied zwischen setEditable() und setEnabled() in einer jCombobox? Kann eine Combobox bearbeitbar, aber nicht aktiviert und umgekehrt sein? In welcher Situation würden Sie welche Methode verwenden?JCombobox editierbar aktiviert

Können Sie sich eine Situation vorstellen, in der Sie setEnabled (false) zusammen mit setEditable (true) tun würden?

Antwort

20

bestimmt, ob die JComboBox Texteingabe zusätzlich zur Auswahl eines Werts über Pull-Down ermöglicht.

setEnabled(boolean) bestimmt, ob die JComboBox mit überhaupt interagieren kann. Wenn es nicht aktiviert ist, wird es als ausgegraut angezeigt.

A JComboBox können eine beliebige Kombination dieser Eigenschaften haben -

  • setEditable(true) + setEnabled(true) = JComboBox erlaubt zusätzlich Texteingabewerte nach unten zu ziehen und Benutzer mit ihr interagieren können.
  • setEditable(false) + setEnabled(true) = JComboBox ermöglicht nur die Auswahl von Werten aus dem Pulldown-Menü, mit denen der Benutzer interagieren kann.
  • setEditable(true) + setEnabled(false) = JComboBox ermöglicht Texteingabe zusätzlich zum Herunterziehen von Werten, aber der Benutzer kann nicht mit ihm interagieren.
  • setEditable(false) + setEnabled(false) = JComboBox können nur Werte aus dem Pulldown-Menü ausgewählt werden, mit denen der Benutzer nicht interagieren kann.

Eine Situation, wo Sie ein JComboBox mit setEnabled(false) haben und setEditable(true) wäre, wenn Sie ein JComboBox mögen, die Texteingabe ermöglicht, aber die Form ist, in einem Zustand, in dem der Wert der JComboBox nicht anwendbar ist. Sie würden normalerweise eine Aktion haben, die setEnabled(true) auf der JComboBox aufrufen würde, sobald es anwendbar wird.

Zum Beispiel, wenn Sie etwas wie ein Studentenwohnheim Formular haben, kann es eine Frage auf dem Formular wie "Brauchen Sie einen Parkplatz?" mit einem JCheckbox. Es gibt eine JComboBox für die Marke des Autos und eine JTextFied für das Kfz-Kennzeichen. Sie können die JComboBox bereits mit gängigen Automarken - Ford, Chevy, Toyota, Honda usw. - bestückt haben - aber Sie möchten auch, dass es bearbeitbar ist, falls jemand etwas wie einen Lamborghini besitzt (und in Studentenwohnungen bleibt) - ja, genau...). Der Wert für die Automarke und das Nummernschild wird nicht benötigt, es sei denn, der Benutzer wählt JCheckBox, was bedeutet, dass er einen Parkplatz benötigt.Sie würden dem JCheckBox einen Listener hinzufügen, der setEnabled(true) auf dem JComboBox und JTextField aufrufen würde, wenn es ausgewählt wurde, und setEnabled(false) wenn es nicht war.

+0

Eine nicht bearbeitbare JComboBox zeigt das ausgewählte Element in dem Feld an, aber die Auswahl kann nicht geändert werden. http://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html#setEditable-boolean- – arley

1

SetEnable() - Aktiviert das Kombinationsfeld, damit Elemente ausgewählt werden können.

SetEditable() - Bestimmt, ob das Feld JComboBox editierbar ist.

7

Wenn Sie setEditable(true) aufrufen, wird das Textfeld der JComboBox editierbar, so dass der Benutzer neben der Auswahl eines Elements aus der Liste auch Text mit der Tastatur eingeben kann.

Wenn Sie setEnabled(false) aufrufen, wird die gesamte Steuerung deaktiviert, sodass der Benutzer überhaupt nicht mehr mit ihm interagieren kann.