Java 从JComboBox中删除边框
您知道用Java从JComboBox中删除边框的方法吗?我尝试以下代码Java 从JComboBox中删除边框,java,border,jcombobox,noborder,Java,Border,Jcombobox,Noborder,您知道用Java从JComboBox中删除边框的方法吗?我尝试以下代码 public class ComboFrame extends JFrame { public ComboFrame() { JPanel container = new JPanel(); JComboBox cmb = new JComboBox(new String[] { "one", "two" }); cmb.setBorder(BorderFactory
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();
}
}
及
不要问为什么有人想从combobx中删除边框。。。我想这没什么意义,但这就是我们想要的,我真的很好奇这是否可以实现。我试了好几招,但都不管用
最有效的方法是使用
cmb.setUI(new BasicComboBoxUI());
这会使边界消失,但会改变L&F,如果可能,我需要保留Windows L&F
谢谢。我做了一些研究,发现 我自己试过了,但似乎确实影响了边境。您可能希望自己尝试以下一个或两个代码块
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);
}
}
for(int i=0;i
请务必注意,在bug条目的底部,您可以阅读以下内容:
JButton维护自己的边框,因此JComponent paintBorder()和paintComponent()不知道JComboBox边框
祝你好运
杰赫 如果您想使用windows L&F,可以执行
cmd.setUI(new WindowsComboBoxUI())代码>
但是,如果您想使用任何L&F,最好使用Jeach提出的解决方案。谢谢Jeach!这确实适用于默认L&F(金属)。但在Windows上,使用L&F系统,它仍然不想工作……6年后,感谢您的回答!我试图更改可编辑jcombobox的颜色,但只能在将其编辑器设置为金属类型后进行更改。然而,这导致了一个丑陋的边界包围了盒子。使用JComponent循环清除了框,背景设置得很好
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);
}
}