JComboBox.setEnabled(false) Darstellung ändern

JavaRentner

Aktives Mitglied
Hallo Wissende,
wenn ich eine JComboBox mit setEnabled(false) setze, wird alles grau in grau angezeigt! (kaum lesbar)

Ist es möglich eine disabled JComboBox farblich so zu gestalten, dass es lesbar wird?
  • Hintergrund WEISS nicht grau.
  • ForeGround ROT nicht grau.
Entweder habe ich im Google die falschen Fragen gestellt, oder es gibt keine Möglichkeit...

Weiss Jemand wie ich das umsetzen könnte?
Habe iwas mit ColorRenderer gefunden... (Bahnhof wie umsetzen)

Geht das irgendwie mit ".setDisabledTextColor(Color.RED);" und ".setDisabledBackgrund(Color.WHITE);" ?

Vielen Dank
 

Robert Zenz

Top Contributor
Das haengt vom verwendeten Look and Feel ab. Das GTK+-LaF zum Beispiel unterstuetzt nichts derartiges. Metal erlaubt es, glaube ich, und so weiter.

Also das haengt komplett vom LaF/Theme ob du das aendern kannst und wenn ja, wie. Meistens unterstuetzen LaFs das setzen von solchen Parametern, das FlatLaF zum Beispiel wuerde dies erlauben.
 

Ernesto95

Bekanntes Mitglied
Das ist in Swing leider nicht so einfach, weil deaktivierte Komponenten vom LAF gesteuert werden.

Aber es gibt einen einfachen Workaround, indem du sie nicht deaktivierst, sondern nicht anklickbar machst.

Java:
Color bgDisabled = Color.WHITE;
Color fgDisabled = Color.RED;
comboBox.setBackground(bgDisabled);
comboBox.setForeground(fgDisabled);
comboBox.setFocusable(false);
comboBox.setEditable(false);
 

JavaRentner

Aktives Mitglied
Das ist in Swing leider nicht so einfach, weil deaktivierte Komponenten vom LAF gesteuert werden.

Aber es gibt einen einfachen Workaround, indem du sie nicht deaktivierst, sondern nicht anklickbar machst.

Java:
Color bgDisabled = Color.WHITE;
Color fgDisabled = Color.RED;
comboBox.setBackground(bgDisabled);
comboBox.setForeground(fgDisabled);
comboBox.setFocusable(false);
comboBox.setEditable(false);
Guter Ansatz, aber wenn ich mit der Maus draufklicke öffnet sich das Popumenü trotzdem.
Kann man da iwie den MouseHandler abfangen und das Popumenü sofort wieder schliessen oder garnicht erst öffnen lassen?
 

JavaRentner

Aktives Mitglied
Das ist auch LaF Abhaengig ob das geht oder nicht.
Solange die ComboBox enabled ist hab ich das hingekriegt und funktioniert.

Wäre es möglich einen eigenen LaF zu schreiben der nur für meine SuperCombo-Klasse gültig ist oder ist das dann Systemweit?

Ich habe eine Anwendung die mehrere JInternalFrames enthält, aber nur auf einem müsste meine SuperCombo-Klasse eingesetzt werden können.
Vielen Dank.
 

Robert Zenz

Top Contributor
Ist es möglich eine disabled JComboBox farblich so zu gestalten, dass es lesbar wird?
  • Hintergrund WEISS nicht grau.
  • ForeGround ROT nicht grau.
Vielleicht ist die Antwort simpel ein anderes LaF zu verwenden?
Und dann gibt es ja noch die mitgelieferten. Ich bilde mir ein es haette noch ein gutes gegeben welches aehnlich wie FlatLaF ist, aber das finde ich gerade nicht.

Wäre es möglich einen eigenen LaF zu schreiben der nur für meine SuperCombo-Klasse gültig ist oder ist das dann Systemweit?
Soweit ich weisz muesste das gehen, du kannst dich auch vom aktuell verwendeten LaF ableiten, aber das ist je nachdem relativ kompliziert. Die Swing Komponenten bestehen quasi aus Model/Controller und View. Das LaF bestimmt das gesamte Aussehen, also kannst du von javax.swing.plaf.ComboBoxUI ableiten und dieses dann per setUI auf die JComboBox deiner Wahl setzen. Eventuell wird das halt etwas Forschungsarbeit wie das LaF funktioniert und was man daran wirklich aendern kann.
 

JavaRentner

Aktives Mitglied
Vielleicht ist die Antwort simpel ein anderes LaF zu verwenden?
Und dann gibt es ja noch die mitgelieferten. Ich bilde mir ein es haette noch ein gutes gegeben welches aehnlich wie FlatLaF ist, aber das finde ich gerade nicht.


Soweit ich weisz muesste das gehen, du kannst dich auch vom aktuell verwendeten LaF ableiten, aber das ist je nachdem relativ kompliziert. Die Swing Komponenten bestehen quasi aus Model/Controller und View. Das LaF bestimmt das gesamte Aussehen, also kannst du von javax.swing.plaf.ComboBoxUI ableiten und dieses dann per setUI auf die JComboBox deiner Wahl setzen. Eventuell wird das halt etwas Forschungsarbeit wie das LaF funktioniert und was man daran wirklich aendern kann.
Sorry, wo und wie setze ich ein LaF? Und welche auswirkungen hat das auf andere Komponenten?
Bin wirklich Anfänger und blicke grad nicht durch.

Möchte das LaF nur in der SuperCombo-Klasse verwenden.
 

Robert Zenz

Top Contributor
Fuer die gesamte Applikation, das Oracle Tutorial dazu beinhaltet alles dazu. Also in Kurzfassung:
  1. Jar hinzufuegen (falls notwendig).
  2. Als erstes in der main machen.
Falls du einzelne Klassen aendern willst, auf den JComponent gibt es die Methode setUI welche die UI ("View") Klasse uebernimmt. Da kannst du auch deine eigene d'ruber setzen fuer einzelne Komponenten. Oder du registrierst deine als Standard, da weisz ich aber gerade nicht wie das genau geht, irgendwas mit der UIDefaults Klasse wahrscheinlich.
 

White_Fox

Top Contributor
Brave sagt:

Hi Brave, how can I style a Java Swing GUI?


You can style a Java Swing GUI using several approaches, ranging from built-in look and feel options to advanced customizations. The most straightforward method involves setting a different look and feel (L&F) to change the overall appearance of the application. Java provides several built-in look and feels, including Metal (the default cross-platform look), System (which mimics the native OS), Windows, and GTK. You can set the look and feel programmatically using UIManager.setLookAndFeel() with the appropriate class name, such as UIManager.getCrossPlatformLookAndFeelClassName() for Metal or UIManager.getSystemLookAndFeelClassName() for the system's native look.

For a more modern and visually appealing appearance, you can use third-party look and feel libraries. Popular options include FlatLaf, which offers a clean, flat design, and commercial libraries like Synthetica or JTattoo, which provide highly customizable themes. These libraries often require adding their JAR files to your project's build path and setting the look and feel via UIManager.setLookAndFeel() with the specific class from the library.

For even greater control over styling, you can use CSS-like styling with libraries such as Java-CSS. This allows you to define styles for Swing components using selectors and properties similar to web CSS, enabling you to style elements based on their type, name, state (like hover), or even complex relationships within the component hierarchy. This approach can be combined with layout managers like MigLayout for sophisticated layouts.

For the most customized appearance, you can create a completely custom window by setting setUndecorated(true) on your JFrame, which removes the default window decorations. You would then manually create a custom title bar and implement your own functionality for moving, resizing, minimizing, and closing the window by handling mouse events on custom components. This method provides full control but requires significant custom code to replicate standard window behaviors.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Editierbare JComboBox auf KeyEvents reagieren Java Basics - Anfänger-Themen 29
G JComboBox ist editable und eingegebenen Text auslesen bei focusLost() Java Basics - Anfänger-Themen 1
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
M JComboBox ersten Eintrag leerlassen bzw. Platzhalter Java Basics - Anfänger-Themen 1
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
H JComboBox wird nicht angezeigt Java Basics - Anfänger-Themen 3
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
T Einträge in jComboBox aus Liste übernehmen Java Basics - Anfänger-Themen 1
T Auslesen mehrerer jComboBox (-en) Java Basics - Anfänger-Themen 4
H JCombobox Java Basics - Anfänger-Themen 1
D JComboBox duplizieren Java Basics - Anfänger-Themen 2
T jComboBox Java Basics - Anfänger-Themen 9
GadgetSofa jComboBox mit dem Button verbinden. Aber wie?? Java Basics - Anfänger-Themen 4
A GUI Absturz nach 3x benutzen einer JComboBox Java Basics - Anfänger-Themen 11
S Erste Schritte JComboBox Java Basics - Anfänger-Themen 1
S JCombobox und JButton verknüpfen Java Basics - Anfänger-Themen 6
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
C JComboBox "Hilfstext" anzeigen Java Basics - Anfänger-Themen 11
T Datentypen Jcombobox Array Java Basics - Anfänger-Themen 1
J JComboBox in andere Klasse Java Basics - Anfänger-Themen 2
S Variablen auslesen beim JCombobox Java Basics - Anfänger-Themen 0
K JCombobox Eclipse Java Basics - Anfänger-Themen 7
D JComboBox erzeugen Java Basics - Anfänger-Themen 1
T JComboBox Java Basics - Anfänger-Themen 3
B ArrayLists in JCombobox Java Basics - Anfänger-Themen 10
M JComboBox und ItemListener/ItemEvent Problem Java Basics - Anfänger-Themen 3
M JComboBox Auswahl Java Basics - Anfänger-Themen 10
N Compiler-Fehler JComboBox DefaultListCellRenderer Java Basics - Anfänger-Themen 2
J JComboBox - Auswahl auslesen Java Basics - Anfänger-Themen 2
J jcombobox.getSelectedItem - nullpointerexception Java Basics - Anfänger-Themen 3
C JComboBox setSelectedItem(Object) Problem Java Basics - Anfänger-Themen 5
M JComboBox Obergrenzen/Untergrenze festlegen? Java Basics - Anfänger-Themen 5
B JComboBox(editable) Java Basics - Anfänger-Themen 6
K JComboBox hat volle Höhe uber das gesamte JPane, warum? Java Basics - Anfänger-Themen 2
S JComboBox mit ArrayList füllen Java Basics - Anfänger-Themen 7
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
S JComboBox füllen Java Basics - Anfänger-Themen 9
C JComboBox Java Basics - Anfänger-Themen 9
R Auf auswahl in ner JComboBox reagieren Java Basics - Anfänger-Themen 3
T Frage zu JComboBox Java Basics - Anfänger-Themen 6
G JComboBox wird nicht gezeichnet Java Basics - Anfänger-Themen 3
N JComboBox mit Dateinamen befüllen Java Basics - Anfänger-Themen 7
M JComboBox => Item String => Color Java Basics - Anfänger-Themen 2
StrikeTom Editable JComboBox + enter Wie??? Java Basics - Anfänger-Themen 3
J JComboBox Listener Java Basics - Anfänger-Themen 6
F Werte aus JComboBox auslesen und Zahlen zuordnen Java Basics - Anfänger-Themen 5
S JComboBox Platzhalter Java Basics - Anfänger-Themen 7
J jComboBox auf default setzen wie? Java Basics - Anfänger-Themen 3
J daten über jComboBox ausgeben wie? Java Basics - Anfänger-Themen 2
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
E JComboBox Java Basics - Anfänger-Themen 4
J jComboBox.getSelectedIndex() Java Basics - Anfänger-Themen 8
J Funktion Auslösen über JComboBox Java Basics - Anfänger-Themen 2
T JComboBox klappt nur ein- bis zweimal auf Java Basics - Anfänger-Themen 30
S Kein Event bei Click auf JComboBox Java Basics - Anfänger-Themen 4
Developer_X JComboBox getSelectedFilè??? Java Basics - Anfänger-Themen 4
T Daten eines Ordners in JCombobox anzeigen Java Basics - Anfänger-Themen 5
M Einträge in JComboBox farblich hinterlegen? Java Basics - Anfänger-Themen 2
6 Dritte JComboBox in Abhaengigkeit von zwei vorherigen Java Basics - Anfänger-Themen 4
G 2. JComboBox in Abhängigkeit der 1. JCombobox füllen Java Basics - Anfänger-Themen 2
S Problem mit JComboBox Java Basics - Anfänger-Themen 9
H jcombobox mit nur einem Item Java Basics - Anfänger-Themen 7
G Inhalt einer JComboBox wechseln Java Basics - Anfänger-Themen 5
G Problem mit JComboBox Java Basics - Anfänger-Themen 15
G JComboBox Strukturiert anzeigen Java Basics - Anfänger-Themen 6
Schandro Hotkeys bei JComboBox abschalten Java Basics - Anfänger-Themen 3
G JComboBox soll beim Öffnen eine andere JCB öffnen Java Basics - Anfänger-Themen 2
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
G JComboBox - BasicComboPopup Java Basics - Anfänger-Themen 4
S Inhalt der JComboBox vergrößtert die JCB ? Java Basics - Anfänger-Themen 2
B Werte aus einer JCombobox in eine Liste Java Basics - Anfänger-Themen 16
mwildam JComboBox FocusGained feuert nicht wenn editable Java Basics - Anfänger-Themen 4
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
S Jcombobox und 2maliges anzeigen wegen ItemStateChanged? Java Basics - Anfänger-Themen 3
W setModel feuert ActionEvent bei JComboBox Java Basics - Anfänger-Themen 2
G Frage zu JComboBox Java Basics - Anfänger-Themen 2
W Actionlistener oder Itemlistener bei JCombobox ? Java Basics - Anfänger-Themen 4
G JComboBox Java Basics - Anfänger-Themen 7
G JComboBox macht Probleme Java Basics - Anfänger-Themen 7
G JComboBox alphabetisch sortieren Java Basics - Anfänger-Themen 2
D Locale zur Laufzeit über JComboBox laden? Java Basics - Anfänger-Themen 17
G JComboBox um eine Methode erweitern Java Basics - Anfänger-Themen 2
G jcombobox deaktivieren Java Basics - Anfänger-Themen 4
M Werte aus Jcombobox sollten als int-Werte zurück gegeben . Java Basics - Anfänger-Themen 7
D Items in JComboBox überprüfen Java Basics - Anfänger-Themen 3
G JComboBox zweckentfremden ? Java Basics - Anfänger-Themen 5
N JCombobox Pfeil nach unten bild auf linke seite, geht das? Java Basics - Anfänger-Themen 8
T JComboBox Problem Java Basics - Anfänger-Themen 4
D JComboBox titel Java Basics - Anfänger-Themen 16
M füllen JComboBox funktioniert nicht Java Basics - Anfänger-Themen 11
J JCombobox Item auswählen Java Basics - Anfänger-Themen 13
A Text einer JComboBox während der Laufzeit ändern ? Java Basics - Anfänger-Themen 4
dercheffe 3x jcombobox nacheinander füllen Java Basics - Anfänger-Themen 6
J Inhalt der JComboBox variable Java Basics - Anfänger-Themen 2
O JComboBox Item soll sich als String speichern Java Basics - Anfänger-Themen 5

Ähnliche Java Themen


Oben