2011-01-07 4 views
2

Я знаю, что вы можете изменить общий внешний вид приложения, установив «look and Feel». Есть ли способ глобально изменить компоненты без написания класса внешнего вида? Например, если вы хотите, чтобы все ваши кнопки были черными, как бы вы это сделали? Я рисую пробел.Java Swing - глобально сменить панели, чтобы иметь розовый фон

Благодаря СТ

ответ

1

Одним из решений может быть, завод шаблон;

Вы можете создать класс Factory, который создает кнопки с предопределенными настройками. Каждый раз, когда вы используете , вам нужно использовать этот заводский класс, и вы получите объекты с предопределенными свойствами.

Button button = factory.createButton() 

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

Спасибо. Я не был ясен. Если у меня есть существующее приложение, и мой клиент сказал, что им нужна другая цветовая схема для кнопок. Как это можно сделать? – soulTower

+0

Вы можете расширить класс кнопок с таким же именем; Кнопка расширяет javax.swing.Button и устанавливает значение фона в конструкторе этого нового класса. Однако вам все равно нужно будет обновить свой код и заменить все импорт javax.swing.Button на новый класс. Простая рефакторизация по сравнению с заводским способом для существующего кода. – fmucar

4

Используйте UIManager и измените настройки по умолчанию для вашего внешнего вида. Здесь есть хороший инструмент: http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/: если вы запустите программу Java Web Start, вы сможете просматривать ключи и значения для каждого компонента.

Однако, только изменение фона может вызвать некоторые новые проблемы, взглянуть на этот вопрос: Java- Changing swing background colour?

+0

Спасибо, это может быть просто чтение, которое я искал. – soulTower

0

Если у вас есть набор соответствующих компонентов, которые вы могли бы перебрать их установки цвета BG.

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

Жесткая часть получает список компонентов. Я сделал это, зарегистрировав определенные группы компонентов с помощью коллекции и используя описанный выше метод для установки различных свойств. Этот сценарий является хорошим аргументом для создания централизованного объекта.

-1

Что делать, если изменить цвет не только? Если это приложение, в котором все находится под вашим контролем, имеет смысл использовать наследование - создайте базовые классы для всех необходимых компонентов (например, панелей, кнопок) и переопределите метод paintComponent, чтобы удовлетворить ваши потребности. Этот подход может быть более модульным, если поведение метода paintComponent в базовых компонентах может быть настроено во время создания экземпляра, предоставляя соответствующие «художники», которые вызывается из метода paintComponent.

Here - потенциально полезная ссылка.