Измените форму JButton, уважая внешний вид - PullRequest
2 голосов
/ 23 октября 2011

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

Я попытался создать JButton, переопределяющий paintComponent, затем обрезать его докруг, но я не получил эффекты границы на Nimbus LAF.

Есть ли лучший способ?Или есть метод в JButton?

1 Ответ

1 голос
/ 27 октября 2011

Для рисования компонентов используется ComponentUI. Этот класс пользовательского интерфейса имеет метод рисования и используется для рисования компонента. Метод рисования использует настройки L & F, которые хранятся как свойства в UIManager.

Для создания собственного компонента RoundButton, например, начиная с. AbstractButton Вы можете создать свой собственный RoundButtonUI (возможно, начиная с ButtonUI). Здесь вы можете создать свой собственный метод рисования, используя свойства обычной кнопки, например Button.font или Button.foreground, чтобы нарисовать свой собственный компонент с теми же значениями L & F, что и у обычной кнопки.

В вашем классе RoundButton вы должны реализовать метод getUIClassID(), который будет возвращать строку "RoundButtonUI". Это заставляет вас использовать RoundButtonUI.

Хороший пример - JButton.

...