Компонент градиента по умолчанию для компонента Swing - PullRequest
6 голосов
/ 09 марта 2012

Есть ли способ изменить фоновую окраску по умолчанию для всех экземпляров компонента свинга (например, JPanel) для рисования с градиентным фоном? Или мне нужно создать расширение JPanel, которое рисует с градиентом, а затем использовать его вместо JPanel везде в моем приложении?

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

ИМХО, было бы проще просто создать подкласс компонента Swing и переопределить его paintComponent метод для рисования градиента. А затем, как вы сказали, используйте этот пользовательский компонент во всем приложении.

Может быть сложно использовать свойства пользовательского интерфейса, поскольку они могут быть непоследовательными для всех LaF.

0 голосов
/ 09 марта 2012

Не совсем понятно, какую область вы намерены. Вы имели в виду class (так что все экземпляры JPanel следуют новой схеме рисования), или вы имеете в виду все компоненты в контейнере (например, все в кадре)?

Существуют возможности сделать это в зависимости от класса компонента, места, где вы можете подключиться, это Look and Feel, и на основе экземпляра компонента, либо метод paintComponent (), или если вам нужно заменить стандартный посмотрите на существующий компонент, где вы не можете перезаписать метод, потому что у вас нет контроля над ним, предоставив свой собственный класс пользовательского интерфейса (смотрите Component.setUI) после того, как компонент был создан.

За исключением подхода перезаписи paintComponent, он не прост в реализации. Для большинства приложений лучше всего подходит простой подход:)

...