2013-03-05 54 views
0

愚蠢的问题:我想着色一个JComboBox - 我的ComboBoxRenderer getListCellRendererComponent方法有时获得控制并且工作正常 - 在其他时候JComboBox只是白色。这个问题似乎部分受到组合框是否有焦点的影响,但我的方法似乎从来没有布尔cellHasFocus - 即使JComboBox作为一个整体似乎具有焦点功能!着色JComboBox

我的一个想法是创建我自己的ComboBox类 - 或者我可以创建一个UI类来处理绘制函数?我试过的东西似乎无效 - 帮助将不胜感激!

+2

的'ListCellRenderer'应该罚款。您将需要共享代码...您是否只想为列表部分或字段部分着色? – MadProgrammer 2013-03-05 02:55:37

+0

谢谢,@MadProgrammer!我检查了一下,我没有字段部分 - 我只有两行,并在它们之间切换。所以我想在JComboBox有焦点时将这两行着色,而当没有时则为白色。如果同时选择了一行,如果它有另一种颜色,它会很好,但这不是必需的。正如我所说的,ListCellRenderer * never *似乎将cellHasFocus视为true。所以,我不知道我是应该使用JComboBox本身还是使用JComboBoxUI。你能提出一些建议吗? TIA – 2013-03-06 00:46:30

+0

你有一些示例代码(你有什么),我在遇到问题时遇到了麻烦 – MadProgrammer 2013-03-06 01:38:31

回答

0
在我的课

我用这个:(UIManager

UIManager.put("ComboBox.background", new ColorUIResource(Color.lightGray)); 
    UIManager.put("JTextField.background", new ColorUIResource(Color.lightGray)); 
    UIManager.put("ComboBox.selectionBackground", new ColorUIResource(Color.green)); 
    UIManager.put("ComboBox.selectionForeground", new ColorUIResource(Color.RED));