Как правильно получить фоновый цвет текущего внешнего вида в Swing? - PullRequest
3 голосов
/ 26 апреля 2010

Я пишу собственный компонент Swing со своей собственной картиной. Я хотел бы спросить, являются ли текущие компоненты внешнего вида непрозрачными, и если да, то каков их цвет фона, чтобы мой компонент мог также использовать его. Мне трудно найти это в Google. Кто-нибудь знает? Спасибо!

Ответы [ 2 ]

2 голосов
/ 26 апреля 2010

Все довольно просто:

public class MyComponent extends JComponent {

    public void paintComponent(Graphics g) {

        if (this.isOpaque()) {
            // Paint background
            g.setColor(this.getBackground());
            g.fillRect(0,0,this.getWidth(), this.getHeight());
        }

        g.setColor(this.getForeground());
        // Continue painting
    }
}
1 голос
/ 26 апреля 2010

Не совсем понял вопрос. У каждого компонента может быть свой цвет фона, поэтому какой цвет фона вы хотите использовать для своего пользовательского компонента?

Я полагаю, что, вообще говоря, цвет фона LAF будет определяться JPanel, поэтому я предполагаю, что ваш пользовательский компонент может просто расширить JPanel, и вам не нужно об этом беспокоиться.

Если вы хотите запросить цвета фона по умолчанию для каждого компонента, вы можете использовать UIManager для его поиска. См. Пример UIManager по умолчанию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...