2010-05-18 2 views
5

Ich kenne JList und JComboBox. Ich benötige die Drop-Down-Funktion der Dropdown-Liste mit mehreren Auswahlfunktionen, die JList bietet.Wie erstelle ich eine Drop-Down-Liste in Java Swing mit mehreren Artikelauswahl?

Dies liegt daran, dass der Inhalt der Liste zu groß ist, um mit einer einfachen Liste angezeigt zu werden. Ich muss auch mehrere Elemente auswählen, sonst wäre ich mit JComboBox zufrieden gewesen.

Irgendwelche Vorschläge?

Antwort

7

Bei Verwendung von Mehrfachauswahl ist es besser, eine Liste als ein Kombinationsfeld zu verwenden. Bei den GUI-Metaphern erwarten die Leute, dass ein Kombinationsfeld eine einzelne Auswahl ist, während Listen beides sein können.

der Inhalt der Liste ist zu groß, eine einfache Liste

Platz der JList in einem JScrollPane werden angezeigt werden. Sie können setVisibleRowCount(int) unter JList aufrufen, um anzugeben, wie viele Zeilen gleichzeitig angezeigt werden sollen.

3

Sie können einen benutzerdefinierten CellRenderer für die Combobox erstellen und diesen Komponenten Kontrollkästchen hinzufügen, damit Sie sie aktivieren und deaktivieren können. Sie müssen so etwas wie dies machen:

public class MyComboBoxRenderer implements ListCellRenderer { 

    private String[] items; 
    private boolean[] selected; 

    public MyComboBoxRenderer(String[] items){ 
     this.items = items; 
     this.selected = new boolean[items.lenght]; 
    } 

    public Component getListCellRendererComponent(JTable table, Object value, 
      boolean isSelected, boolean hasFocus, int index) { 
     // Create here a JLabel with the text 
     // Create here a JCheckBox 
     // Add them to a layoutmanager 
     return this; 
    } 

    public void setSelected(int i, boolean flag) 
    { 
     this.selected[i] = flag; 
    } 

} 
+0

dieser Klasse müssen sich einige Subtypen von 'Component', um den Rückgabetyp zu machen von 'getListCellRendererComponent()' stimmen überein, wenn Sie 'zurückgeben möchten;'. Wenn Sie das Label, das Sie erstellt haben, zurückgeben wollen, ist das Original in Ordnung (so bekomme ich es nicht wirklich). Und woher kommt 'setSelected()'? Am besten den gesamten Code zu posten. – FaithReaper

0

Um die beschriebene Funktionalität zu erreichen, entschied ich mich schließlich dazu, die JMenuBar zu "missbrauchen" und mehrere JCheckBoxMenuItems hinzuzufügen. Die GUI passt dann perfekt zum Zweck (zumindest für mich), es ist nur die Handhabung des ItemEvent, die riskiert, ein bisschen nervig zu werden.

(endlich da, definiert ich einige Bit-Logik über die Elemente, und dann kann mich darauf beschränken, nur eine Art von Veranstaltung Handling)

Verwandte Themen