Удалить фокус из JComboBox Java Swing - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь удалить пунктирную линию из моего JComboBox. Начальный ComboBox Initial JComboBox имеет пунктирную линию после того, как он получил фокус: После нажатия

Теперь я хочу убрать этот фокус. Однако я не могу найти его в опциях UIManager (https://gist.github.com/itzg/5938035). Я просмотрел этот пост от мая 2018 года, но ответа пока нет.

Я пробовал следующее:

  jComboBox.setFocusable(false);
  UIManager.put("ComboBox.focus", new Color(0, 0, 0, 0));

но ни один из них не работал.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете сделать следующее:

comboBox.setUI(new BasicComboBoxUI());

Это приведет к следующему после выбора элемента и избавит вас от пунктирной границы:

enter image description here

Для удаления любого «вида» границы фокуса вам необходимо переопределить ComboBoxUI, который используется для рисования поля и его компонента.

Вот код, который я использовалдля достижения примера:

public ComboboxWithoutDottedBorder() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch(Exception ignored){}
       this.setVisible(true);
       JLabel label = new JLabel("Label");
       JComboBox<String> combo = new JComboBox<>();
       this.setLayout(new BorderLayout());
       combo.addItem("A");
       combo.addItem("B");
       combo.addItem("C");
       combo.addItem("D");
       combo.setUI(new BasicComboBoxUI());

       this.add(label, BorderLayout.NORTH);
       this.add(combo, BorderLayout.SOUTH);
    }
...