Frage

Ich bin mir dessen bewusst JList und JComboBox. Ich brauche das Kombinationsfeld Drop-Down-Funktionalität mit Mehrfachauswahl Funktionalität dass JList bereitstellt.

Das ist, weil der Inhalt der Liste zu groß ist, um eine einfache Liste angezeigt werden sollte verwenden. Ich brauche auch mehrere Elemente auszuwählen, sonst würde ich mit JComboBox sich damit begnügt haben.

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Bei der Verwendung von Multi-wählen, ist es besser, eine Liste als ein Kombinationsfeld zu verwenden. Als GUI Metaphern gehen, erwarten die Leute ein Kombinationsfeld Einzel wählen, um während Listen entweder sein kann.

  

der Inhalt der Liste ist zu groß, eine einfache Liste angezeigt werden sollte mit

Setzen Sie den JList in einem JScrollPane. Sie können rufen Sie setVisibleRowCount (int) auf dem JList an, wie viele Zeilen gleichzeitig angezeigt werden sollen.

Andere Tipps

Sie können für die Combobox eine benutzerdefinierte CellRenderers machen, und fügen Sie Kontrollkästchen, dass Komponenten, so können Sie diese überprüfen und deaktivieren. 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;
    }

}

Wenn Ihre Daten einen hierarchischen Charakter hat, betrachtet NetBeans' Outline Komponente, diskutiert in bei Bekanntgabe der neuen Swing-Baum Tabelle und in dieser Antwort . Hier ist die Aktuelle Entwicklerversion von der API.

die beschriebene Funktionalität zu erreichen, entschied ich mich schließlich auf „Missbrauch“ der JMenuBar und fügen Sie mehrere JCheckBoxMenuItems zu. Die GUI dann paßt perfekt den Zweck (zumindest für mich), es ist nur die Handhabung des ItemEvent ist, dass die Risiken ein bisschen ärgerlich zu werden.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top