【发布时间】:2016-07-04 12:39:15
【问题描述】:
我有一个 JComboBox,其中几乎所有的布局都发生了变化。我更改了弹出窗口中的选择颜色、箭头按钮、背景颜色等。最后剩下的部分,我看不到我想要的样子,是弹出窗口的边框颜色(内部 JList)。
我的组合框是这样的:
如您所见,它有一个黑色边框,与整个布局不匹配。我想将其更改为您在上方边框中看到的蓝色。
我做了一些研究,但没有任何解决方案适合我。最接近的解决方案是 post。但它没有用。
随着选择颜色的变化,我已经尝试通过以下方式更改边框颜色:
public static void setSelectionColorOfComboBox(JComboBox<String> comboBox)
{
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup) child;
JList list = popup.getList();
list.setBorder(new LineBorder(ColorPalette.LIGHT_BLUE, 1));
list.setSelectionBackground(ColorPalette.LIGHT_BLUE);
list.setSelectionForeground(Color.WHITE);
list.setFocusable(false);
}
根据上面的链接帖子,为了确保不会遗漏任何内容,我创建了一个单独的方法来更改该边框:
public static void setBorderColorOfComboBoxPopup(JComboBox<String> comboBox)
{
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup) child;
JList list = popup.getList();
list.setBorder(new LineBorder(ColorPalette.LIGHT_BLUE));
}
但这也不起作用。有谁知道为什么这些常用方法对我不起作用,或者至少有人知道改变边框颜色的另一种方法,所以我可以尝试不同的方法?
目前我正在考虑,如果 JList 周围有类似滚动窗格的东西,如果可能的话,我会研究是否可以访问它并设置它的边框。
【问题讨论】:
标签: java border jscrollpane jcombobox jlist