Иллюстрированный самоучитель по Java

Создание "легкого" компонента

Листинг 10.8. Создание круглой кнопки.

public void paint(Graphics g){
int w = getSize().width, h = getSize().height;
int d = Math.min(w, h); // Диаметр круга
Color с = g.getColor(); // Сохраняем текущий цвет
g.setColor(Color.lightGray); // Устанавливаем серый цвет
g.fillArc(0, 0, d, d, 0, 360); // Заливаем круг серым цветом
g.setColor(с); // Восстанавливаем текущий цвет
if (isDown)(
g.drawArc(0, 0, d, d, 43, 180);
g.drawArcd, 1, d -2, d -2, 43, 180);
drawFlower(g, 8, 10, d, d);
}else{
g.drawArc(0, 0, d, -d, 229, 162);
g.drawArcd, 1, d -2, d -2, 225, 170);
drawFlower(g, 6, 8, d, d);
}
}
public Dimension getPreferredSize(){
return new Dimension(30.30);
}
public Dimension getMinimumSize()
{
return getPreferredSize(); }
public Dimension getMaximumSize(){
return getPreferredSize();
}

Иллюстрированный самоучитель по Java › Основные компоненты › Создание "легкого" компонента
Рис. 10.8. Круглая кнопка

Сразу же надо дать еще одну рекомендацию. "Легкие" контейнеры не занимаются обработкой событий без специального указания. Поэтому в конструктор "легкого" компонента следует включить обращение к методу enableEvents () для каждого типа событий. В нашем примере в конструктор класса FlowerButton полезно добавить строку:

enabieEvents(AWTEvent.MOUSE_EVENT_MASK);

…на случай, если кнопка окажется в "легком" контейнере. Подробнее об этом мы поговорим в главе 12.

В документации есть хорошие примеры создания "легких" компонентов, посмотрите страницу docs\guide\awt\demos\lightweight\index.html.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.