Использование стандартных кнопок от Look and Feel - PullRequest
2 голосов
/ 13 марта 2011

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

Например, в прикрепленном изображении, которое я имеюпользовательский диалог и стандартный диалог выбора файла.Я хочу, чтобы кнопки «OK» и «Отмена» в диалоговом окне выбора файлов использовались для эквивалентных кнопок в моем настраиваемом диалоговом окне.

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

Существует ли простое решение этой проблемы?

example image

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Извините, что несу плохие новости, но, похоже, не существует стандартного способа сделать это кроссплатформенным.Поведение, мнемоника и значки на кнопках по умолчанию обрабатываются очень специфично для каждого внешнего вида.

Вот SO вопрос, который отвечает на вопрос о том, как установить по умолчанию OK и Отменакнопки в диалоговом окне (кнопка по умолчанию устанавливается с помощью getRootPane().setDefaultButton(...), а для кнопки «Отмена» требуется пользовательский слушатель клавиатуры. Если вам очень повезло, установка кнопки по умолчанию может добавить к ней значок, в зависимости от того, как кодируется пользовательский интерфейс.

В этой теме форума рассматривается вопрос получения ресурсов значков из UIManager. Каждый LaF имеет набор значений по умолчанию для пользовательского интерфейса, таких как цвета, текст, границы и значки. Существует ряд значков по умолчанию, которые встречаются во всех LaF, но для нестандартных значков, таких как значки на кнопках, никаких гарантий нет. Однако, если вы скажете мне, какой LaF вы используете впредоставленный вами снимок экрана, я могу посмотреть ключи ресурсов, используемые его пользовательскими классами пользовательского интерфейса (или вы можете найти его самостоятельно, если у вас есть исходный код).Это вспомогательный метод, который ищет значки с помощью этих клавиш и добавляет их к кнопкам, если они найдены.

0 голосов
/ 13 марта 2011

JButton.setUI (ButtonUI) устанавливает пользовательский интерфейс только для одного JButton. Используйте это вместе с фабрикой:

public static JButton createStyledButton(String text) {
   JButton button = new JButton(text);
   button.setUI(STYLE_UI);
   return button;
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...