【问题标题】:Colouring JComboBox着色 JComboBox
【发布时间】:2013-02-19 08:02:03
【问题描述】:

愚蠢的问题:我正在尝试为 JComboBox 着色 - 我的 ComboBoxRenderer getListCellRendererComponent 方法有时会获得控制并且工作正常 - 在其他时候 JComboBox 只是白色。这个问题似乎部分受到组合框是否有焦点的影响,但我的方法似乎从来没有打开布尔值 cellHasFocus - 即使整个 JComboBox 看起来好像它有焦点一样!

我的一个想法是创建自己的 ComboBox 类 - 或者我可以创建一个 UI 类来处理绘图功能吗?我尝试过的任何方法似乎都不起作用-我们将不胜感激!

【问题讨论】:

  • ListCellRenderer 应该没问题。您将需要共享代码...您只想为列表部分或字段部分着色吗?
  • 谢谢@MadProgrammer!我检查了,我没有字段部分 - 我只有两行,并在它们之间切换。因此,当 JComboBox 有焦点时,我希望两行都着色,而没有焦点时则为白色。如果还选择了一行,如果它有另一种颜色会很好,但这不是必需的。正如我所说,ListCellRenderer never 似乎认为 cellHasFocus 是真的。所以,我不知道我应该使用 JComboBox 本身还是使用 JComboBoxUI。你能给点建议吗? TIA
  • 你有一些示例代码(你有什么),我很难理解它
  • 嗨@MadProgrammer!如果我只是创建一个新的(无字段)JComboBox,它是白色的。如果我添加语句 cBox.setUI(new BasicComboBoxUI());如果 JComboBox 没有焦点,则为白色,如果有,则为蓝色,并且仅在我使用鼠标选择其中一行时(不使用向上和向下箭头)实际显示我在 getListCellRendererComponent 方法中指定的颜色。选择后它会变回蓝色。我的问题是:我如何控制这些颜色 - 特别是蓝色,因为我不知道这是在哪里(或为什么)生成的。提前致谢!
  • 在另一篇关于 JComboBox 的帖子中找到了解决方案(paintComponent)。但是,在paintComponent 中执行drawString 产生的文本看起来有点“不稳定”(与JList 滚动显示相比),所以这不是一个很好的解决方案——任何人都知道为什么会这样和/或如何解决它?跨度>

标签: java swing colors jcombobox


【解决方案1】:

在我的课堂上我使用这个:(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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 2021-02-08
    • 1970-01-01
    • 2018-10-12
    • 2013-09-17
    • 2021-05-17
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多