JCombobox default wert

Diskutiere JCombobox default wert im AWT, Swing, JavaFX & SWT Bereich.
Hatsi09

Hatsi09

Hallo

ist es möglich, dass man bei der Combobox einen default wert setzt, also z.B. "Stimme auswählen", der nicht als selected gilt? Hab das schon fertig mit mehreren Comboboxen und natürlich könnte ich immer if (!Combobox.getSelectedItem().equals("Stimme auswählen")) machen, aber vllt weiß jemand von euch, ob das effizienter und schneller geht?
 
Hatsi09

Hatsi09

sehr viel, z.B. wenn ich einen Button habe, der erst freigeschaltet wird, wenn ein Element ausgewählt wurde, so wird er bei diesem default wert nicht freigeschaltet. Zudem wenn ich getSelectedItem().toString aufrufe und der default wert gesetzt ist, dass entweder eine Meldung kommt oder eben ein leerer String zurückgegeben wird?
 
mihe7

mihe7

sehr viel, z.B. wenn ich einen Button habe, der erst freigeschaltet wird, wenn ein Element ausgewählt wurde, so wird er bei diesem default wert nicht freigeschaltet. Zudem wenn ich getSelectedItem().toString aufrufe und der default wert gesetzt ist, dass entweder eine Meldung kommt oder eben ein leerer String zurückgegeben wird?
OK, dann geht es lediglich darum, einen Wert anzuzeigen, wenn keiner ausgewählt wurde.

Java:
import javax.swing.*;

public class Test {
    static class DefaultValueRenderer extends DefaultListCellRenderer {
        private Object defaultValue;

        public DefaultValueRenderer(Object defaultValue) {
            this.defaultValue = defaultValue;
        }

        @Override
        public java.awt.Component getListCellRendererComponent(JList<?> list, 
                Object value, int index, boolean isSelected, boolean cellHasFocus) {
            return super.getListCellRendererComponent(list,
                value == null ? defaultValue : value,
                index, isSelected, cellHasFocus);
        }
    }

    public void run() {
        JComboBox<String> combo = new JComboBox<>(new String[]{"A","B","C"});
        JComboBox<String> combo2 = new JComboBox<>(new String[]{"A","B","C"});
        combo2.setRenderer(new DefaultValueRenderer("Bitte wählen"));

        combo.setSelectedIndex(-1);
        combo2.setSelectedIndex(-1);

        combo.setPrototypeDisplayValue("XXXXXXXXXXXX");
        combo2.setPrototypeDisplayValue("XXXXXXXXXXXX");        
    
        JPanel panel = new JPanel();
        panel.add(combo);
        panel.add(combo2);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
 
Hatsi09

Hatsi09

was macht der Befehl "combo.setPrototypeDisplayValue("XXXXXXXXXXXX");"?
 
mihe7

mihe7

Der sorgt nur dafür, dass die ComboBox ausreichend groß ist, um "XXXXXXXXXXXX" darzustellen.
 
Thema: 

JCombobox default wert

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben