UIManager.getLookAndFeelDefaults(). Setzen ("Button.background", button)
Für die Farbe der Tasten von JOptionPane Dialoge Ich verstehe nicht, warum es nicht funktioniert. Es sollte. Vielleicht ein Nebeneffekt. Wir sehen nicht Ihren gesamten Code.
Versuchen Sie diesen einfachen Code, Sie sollten nur grüne Tasten sehen.
package swing.uimanager;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
public class JFrameWithUIManger extends JFrame {
public static void main(String[] args) {
new JFrameWithUIManger();
}
public JFrameWithUIManger() {
final UIDefaults lookAndFeelDefaults = UIManager.getLookAndFeelDefaults();
lookAndFeelDefaults.put("Button.background", Color.GREEN);
add(new JButton("A button"));
pack();
setVisible(true);
JOptionPane.showMessageDialog(this, "hello I am a message dialog");
JOptionPane.showConfirmDialog(this, "hello I am a question dialog", "do you like me ?", JOptionPane.YES_NO_OPTION);
}
}
Für den weißen Hintergrund in dem Titel, haben Sie eine Farbe (weiß), so scheint es zu funktionieren. Vielleicht ein Problem in einem Schlüsselwert. Post es bitte, wenn Sie möchten, verstehen wir besser.
bearbeiten
Nachdem Sie Code zu sehen, habe ich verstanden, Ihr Problem. Es ist das Aussehen und Gefühl verwendet. Sie verwenden nicht das Standard-Look and Feel (Metall).
Wahrscheinlich wissen Sie nicht, aber all das Aussehen und Gefühl in Swing nicht gleich geboren.
In der Tat, einige Optionen und Mix-Optionen werden durch einige Look and Feel unterstützt, werden aber nicht von anderen Look and Feel unterstützt.
Wenn Sie das Standard-Look and Feel verwenden, sollten Sie weniger Kompatibilitätsprobleme haben.
Der beste Weg, zu wissen, ob es richtig wahr unterstützt wird, ist auf einige offiziellen Dokumente zu berichten, aber es ist, dass eine Menge Informationen über sie trocken ist, mit Fehlern und detaillierte nicht
In dem Link, der Sie in Ihrem Kommentar gepostet: http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button, bedeuten die in den Tabellen angezeigten Schlüssel nicht, dass Werte vorhanden oder modifizierbar sind, sondern dass nur die Schlüssel in der LAF vorhanden sind.
Jeder LAF ist dafür verantwortlich, den Schlüssel und die Möglichkeit, die mit den Schlüsseln verbundenen Werte zu ändern, zu berücksichtigen oder nicht.
Ich habe versucht, mit dem Windows LAF nur die Hintergrundfarbe Schaltfläche, funktioniert es auch nicht. Es scheint also kein Nebeneffekt zu sein, aber es scheint, als ob es an Unterstützung für dieses Feature für den Windows LAF fehlt.
Wie auch immer, Sie können Interesse am Nimbus haben, wenn Sie ein offizielles, schönes und neueres und flexibleres Aussehen und Gefühl als das klassische Metall Aussehen und Gefühl wollen. Nimbus document
Es seit der Java SE 6 Update verfügbar ist 10.
Ich stimme Ihnen zu, ist Metall hässlich. Aber warum nicht Nimbus anstelle der Fenster LAF verwenden? Es ist großartig. Ich habe versucht, Ihren Code, der einige Werte von IAF mit Nimbus ändert, es scheint gut zu funktionieren. Vielleicht könntest du ein paar kleine Änderungen vornehmen, aber die Basis sollte gut sein.
Warum eine neue UIManger-Instanz erstellen? Außerdem arbeite ich an der Implementierung meiner eigenen Dialoge für den Fall, dass ich den UIManager nicht richtig arbeiten lassen kann. – DarkGuardsman
Falls Sie einen eigenen Dialog verwenden, ist die UImanager-Instanz nicht erforderlich. – Sirsendu
Ya, aber UIManager vereinfacht den Prozess sehr, wenn ich es funktioniere :) – DarkGuardsman