ComboBox mit Farbe
-
Hi,
ich möchte eine ComboBox oder eine ähnliche Komponente zur Auswahl von ein paar Farben benutzen. Kann man statt Text unterschiedliche Farben in der ComboBox anzeigen?
Gruss Stefan
-
Natürlich.
Du musst dir einfach einen eigenen ListCellRenderer schreiben (du verwendest doch Swing oder?), das dann JLabels anzeigt, die die entsprechende Hintergrundfarbe haben. Ein gutes Beispiel dafür ist das Codebeispiel in der Klassenbeschreibung der APIDoc (javax.swing.ListCellRenderer)
-
Ich weis ja nicht ob ich das gleiche Beispiel wie du meintest gefunden habe aber damit komme ich eh nicht klar. Keine Ahnung wie ich das auf meinen Fall anwenden müsste.
-
Du müsstest das dann ungefähr so machen (ungetestet und nicht kompiliert):
//Das hier ist deine ComboBox, der du einen Vector gefüllt mit Color-Objekten übergibst JComboBox myComboBox = new JComboBox(colors); ComboBoxRenderer renderer = new ComboBoxRenderer(); renderer.setPreferredSize(new Dimension(100, 30)); myComboBox.setRenderer(renderer); [...] //Hier machst du dir einen eigenen Renderer class ComboBoxRenderer extends JLabel implements ListCellRenderer { public ComboBoxRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setBackground((Color)value); return this; } }
So inetwa sollte es klappen. Wenn was mit den Größen nicht stimmt, dann solltest du eventuell auch noch die Preferred- bzw MinimumSize ändern.
-
Danke.
Geht prima aber ich habe es noch etwas verändert bis es so funktioniert wie ich wollte.