从JComboBox Java Swing中移除焦点

时间:2019-04-18 12:00:57

标签: java swing combobox focus

我正在尝试从JComboBox中删除虚线。 最初的ComboBox Initial JComboBox在获得焦点之后用虚线表示: After clicked

现在,我要删除该焦点。但是,在UIManager的选项(https://gist.github.com/itzg/5938035)中找不到它。我看过2018年5月以来的this帖子,但答案还没有。

我尝试了以下方法:

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

但是他们都不起作用。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

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);
    }