Java Swing - глобально изменить панели, чтобы иметь розовый фон - PullRequest
2 голосов
/ 07 января 2011

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

Спасибо ST

Ответы [ 4 ]

4 голосов
/ 07 января 2011

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

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

1 голос
/ 07 января 2011

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

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

Button button = factory.createButton()

class Factory{
 Button createButton(){
   Button button = new Button();
   button.setBackgroundColor(Color.PINK);
   return  button;
 }
}
0 голосов
/ 23 февраля 2011

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

Здесь является потенциально полезной ссылкой.

0 голосов
/ 07 января 2011

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

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

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

...