首页 > 解决方案 > 从 JComboBox Java Swing 中移除焦点

问题描述

我正在尝试从我的JComboBox. 初始 ComboBox Initial JComboBox获得焦点后有一条虚线: 单击后

现在,我想消除这个焦点。UIManager但是我在's 选项(https://gist.github.com/itzg/5938035)中找不到它。我从 2018 年 5 月开始查看这篇文章,但还没有答案。

我尝试了以下方法:

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

但他们都没有工作。

任何帮助将不胜感激!

标签: javaswingcomboboxfocus

解决方案


您可以执行以下操作:

comboBox.setUI(new BasicComboBoxUI());

这将在选择一个元素并让您摆脱虚线边框后产生以下结果:

在此处输入图像描述

要删除任何“种类”的焦点边框,您需要覆盖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);
    }

推荐阅读