Swing: убрать рамку фокуса с кнопок диалогов

Интересно, как убрать эту серую рамку из кнопок в диалогах?

Для простых кнопок J я нашел решение - просто используйте button.setFocusPainted(false);Но есть ли простой способ выполнить то же самое для всех кнопок во всех диалогах? Я попытался просмотреть свойства UIManager, но кажется, что там нет подходящих параметров.

Заранее спасибо!

3 ответа

Решение
  • от JButtons API Вы можете использовать JButton.setFocusable() и с JButton.setBorderPainted(false);

  • от UIManager должен переопределить ключ (действительно для всего экземпляра JVM)

,

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("Button.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
  • Я бы предложил изменить Color с transparency (4-й параметр в коде AM) в другой более достойный Colorиначе вы не сможете увидеть фокус для любого из `JButtons

Как насчет

JButton.setFocusPainted(false)

Вот глобальное исправление, поэтому вам не нужно делать это вручную для каждого элемента управления. Из моего другого поста: Отключить рамку фокусировки JButton

        // Removes the dotted border around controls which is not consistent with Windows
        UIManager.put("Button.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("ToggleButton.focus", new ColorUIResource(new Color(0, 0, 0, 0)));

        // ways to remove it from other controls...
        UIManager.put("CheckBox.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("TabbedPane.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("RadioButton.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
        UIManager.put("Slider.focus", new ColorUIResource(new Color(0, 0, 0, 0)));

        // figure out combobox
        UIManager.put("ComboBox.focus", new ColorUIResource(new Color(0, 0, 0, 0)));
Другие вопросы по тегам