Как я могу настроить рендер JRadioButton? - PullRequest
1 голос
/ 24 июля 2010

Я создал подкласс JRadioButton, в котором я переопределяю метод paintComponent следующим образом:

@Override
protected void paintComponent(Graphics g) {
    g.drawImage(
        isSelected() ? 
           getCheckedImg() :
           getBasicImg()
    , 0, 0, this);
}

но похоже, что когда кнопка нарисована, это изображение, которое она использует навсегда. Тест isSelected, похоже, не имеет никакого эффекта. Графика кэшируется или что-то на Java? Как я могу предоставить своему пользовательскому JRadioButton выбранное и невыбранное изображение? Должен ли я написать пользовательский интерфейс?

Ответы [ 3 ]

4 голосов
/ 24 июля 2010

Прочитайте API. Есть такие методы, как:

setIcon()
setSelectedIcon()

среди прочих, которые вы можете использовать вместо рисования на заказ.

2 голосов
/ 24 июля 2010

Для сохранения функциональности нетрудно расширить BasicRadioButtonUI и переопределить метод делегата paint(). Вы можете установить новый пользовательский интерфейс, используя setUI().

0 голосов
/ 24 июля 2010

Даже в Java Swing я обычно переопределяю paint, а не paintComponent, чтобы настроить внешний вид. Я считаю, что по умолчанию paint будет вызывать paintComponent, но только если компонент должен быть перекрашен.

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