2011-01-07 5 views
2

Ich weiß, dass Sie das allgemeine Erscheinungsbild einer Anwendung ändern können, indem Sie das "Look and Feel" einstellen. Gibt es eine Möglichkeit, Komponenten global zu ändern, ohne eine Look & Feel-Klasse zu schreiben? Zum Beispiel, wenn Sie möchten, dass alle Ihre Schaltflächen schwarz sind, wie würden Sie das tun? Ich zeichne ein leeres Blatt.Java Swing - Globales Ändern von Panels mit rosa Hintergrund

Dank ST

Antwort

1

Eine Lösung sein kann, Fabrikmuster;

Sie können eine Factory-Klasse erstellen, die Schaltflächen mit vordefinierten Einstellungen erstellt. Jedes Mal, wenn Sie eine Schaltfläche benötigen, verwenden Sie diese Factory-Klasse und Sie erhalten Objekte mit vordefinierten Eigenschaften.

Button button = factory.createButton() 

class Factory{ 
Button createButton(){ 
    Button button = new Button(); 
    button.setBackgroundColor(Color.PINK); 
    return button; 
} 
} 
+0

Danke. Ich war nicht klar. Wenn ich eine bestehende Anwendung habe und mein Kunde sagte, dass sie ein anderes Farbschema für Tasten haben möchte. Wie konnte das erreicht werden? – soulTower

+0

Sie können die Button-Klasse mit dem gleichen Namen erweitern wie; Button erweitert javax.swing.Button und setzt den Hintergrundwert im Konstruktor dieser neuen Klasse. Sie müssen jedoch Ihren Code aktualisieren und alle javax.swing.Button-Importe in Ihre neue Klasse ersetzen. Einfachere Refactorisierung im Vergleich zu der Fabrik für einen bestehenden Code. – fmucar

4

die UIManager verwenden und die Standardeinstellungen für Ihr Aussehen und fühlen sich ändern. Es gibt ein nettes Tool hier: http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/ Wenn Sie das Java Web Start-Programm ausführen, können Sie die Schlüssel und Werte für jede Komponente durchsuchen.

jedoch nur den Hintergrund zu ändern könnten einige neue Probleme verursachen, werfen Sie einen Blick auf diese Frage: Java- Changing swing background colour?

+0

Danke, das könnte genau die Lektüre sein, nach der ich gesucht habe. – soulTower

0

Wenn Sie eine Sammlung der entsprechenden Komponenten haben Sie Schleife durch sie die BG-Farbeinstellung könnte.

public void setBgColor(Color color, List<Component> components) { 
    for (Component c : components) { 
     c.setBackgroundColor(color); 
    } 
} 

Der schwierige Teil erhält eine Liste der Komponenten. Ich habe dies getan, indem ich bestimmte Komponentengruppen mit einer Sammlung registriert habe und die obige Methode verwendet habe, um verschiedene Eigenschaften festzulegen. Dieses Szenario ist ein gutes Argument für die zentralisierte Objekterstellung.

-1

Was ist, wenn nicht nur die Farbe geändert werden muss? Wenn dies eine Anwendung ist, bei der alles unter Ihrer Kontrolle steht, ist es sinnvoll, Vererbung zu verwenden - erstellen Sie Basisklassen für alle erforderlichen Komponenten (z. B. Bedienfelder, Schaltflächen) und überschreiben Sie die paintComponent-Methode entsprechend Ihren Anforderungen. Dieser Ansatz könnte modularer sein, wenn das Verhalten der paintComponent-Methode in den Basiskomponenten zur Instanziierungszeit angepasst werden könnte, indem relevante "Maler" bereitgestellt werden, die von der paintComponent-Methode aufgerufen werden.

Here ist eine potenziell nützliche Verbindung.

Verwandte Themen