Java列表设置列表项的背景

发布于 2024-09-10 17:24:42 字数 56 浏览 9 评论 0原文

如何更改 Java AWT 列表项的背景颜色?我指的是 AWT 列表中的单个项目,而不是整个项目。

How does one change the background color of a Java AWT List item? By that I mean a single item in a AWT List, not the whole thing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

独木成林 2024-09-17 17:24:42

您将需要一个自定义渲染器。也就是说,如果您使用 Swing。最好坚持使用 Swing 组件,而不是 awt gui 组件。

JList
...
setCellRenderer(new MyCellRenderer());
...
class MyCellRenderer extends DefaultListCellRenderer
{
  public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
  {
    super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    Color bg = <calculated color based on value>;
    setBackground(bg);
    setOpaque(true); // otherwise, it's transparent
    return this;  // DefaultListCellRenderer derived from JLabel, DefaultListCellRenderer.getListCellRendererComponent returns this as well.
  }
}

You'll need a custom renderer. That is, if you're using Swing. It's better to stick with the Swing components and not the awt gui components.

JList
...
setCellRenderer(new MyCellRenderer());
...
class MyCellRenderer extends DefaultListCellRenderer
{
  public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
  {
    super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    Color bg = <calculated color based on value>;
    setBackground(bg);
    setOpaque(true); // otherwise, it's transparent
    return this;  // DefaultListCellRenderer derived from JLabel, DefaultListCellRenderer.getListCellRendererComponent returns this as well.
  }
}
梦一生花开无言 2024-09-17 17:24:42

由于Java AWT List继承自Component,因此使用Component的setBackground(Color c)方法。

List coloredList = new List(4, false);
Color c = new Color(Color.green);
coloredList.add("Hello World")
coloredList.setBackground(c);

列表现在的颜色为绿色。

Since Java AWT List inherits from Component, use Component's setBackground(Color c) method.

List coloredList = new List(4, false);
Color c = new Color(Color.green);
coloredList.add("Hello World")
coloredList.setBackground(c);

List now has a color green.

感性 2024-09-17 17:24:42

自从我使用 AWT 以来已经有一段时间了,但是你不能只使用 setBackground(Color) 吗? List 是 java.awt.Component 的子类。

Been a while since I have worked with AWT, but can't you just use setBackground(Color)? List is a subclass of java.awt.Component.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文