gpt4 book ai didi

java - 从 JComboBox 中移除边框

转载 作者:行者123 更新时间:2023-11-30 06:39:32 25 4
gpt4 key购买 nike

您知道用 Java 去除 JComboBox 边框的方法吗?我试试下面的代码

public class ComboFrame extends JFrame {
public ComboFrame() {
JPanel container = new JPanel();

JComboBox cmb = new JComboBox(new String[] { "one", "two" });
cmb.setBorder(BorderFactory.createEmptyBorder());
container.add(cmb);

getContentPane().add(container);
pack();
}
}

public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
EventQueue.invokeLater(new Runnable() {
public void run() {
new ComboFrame().setVisible(true);
}
});
}

不要问为什么有人要从 combobx 中删除边框......我想这没有太大意义,但这就是它想要的方式,我真的很好奇它是否可以完成。我尝试了几个技巧,但没有一个奏效。

最有效的是改变用户界面

cmb.setUI(new BasicComboBoxUI());

这会使边框消失,但会改变 L&F,如果可能,我需要保留 Windows L&F。

谢谢。

最佳答案

我做了一些研究,发现 this bug

我自己试了一下,好像确实影响了边框。您可能想亲自尝试以下一个或两个代码块。

for (int i = 0; i < combo.getComponentCount(); i++) 
{
if (combo.getComponent(i) instanceof JComponent) {
((JComponent) combo.getComponent(i)).setBorder(new EmptyBorder(0, 0,0,0));
}


if (combo.getComponent(i) instanceof AbstractButton) {
((AbstractButton) combo.getComponent(i)).setBorderPainted(false);
}
}

请务必注意,在错误条目的底部,您可以阅读以下内容:

The JButton maintains it's own border so JComponent paintBorder() and paintComponent() has no awareness of the JComboBox border.

祝你好运

杰奇!

关于java - 从 JComboBox 中移除边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com