gpt4 book ai didi

java - 自定义 ListCellRenderer 不会改变背景颜色

转载 作者:搜寻专家 更新时间:2023-11-01 01:08:47 24 4
gpt4 key购买 nike

我有这门课:

 @SuppressWarnings("serial")
private class DataCellRenderer extends JLabel implements ListCellRenderer
{
public DataCellRenderer()
{
setHorizontalAlignment(SwingConstants.RIGHT);
}

@Override
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{

if(isSelected)
setBackground(Color.red);

setText(" " + value.toString());

return this;
}
}

问题是当我在我的 JList 中选择一个单元格时,我的背景不会变成红色。 setText 部分有效,但我不明白为什么它不会改变单元格的背景颜色。任何人都有任何想法,谢谢!

最佳答案

主要问题是默认情况下标签是不透明的,因此您需要使标签不透明才能绘制背景。

但是您不需要为此创建自定义渲染器。默认渲染器是不透明的。您需要做的就是设置列表的选择背景属性:

list.setSelectionBackground(Color.RED);

如果您正在尝试创建一个渲染器来右对齐文本,那么您只需在默认渲染器上设置一个属性即可:

DefaultListCellRenderer renderer = (DefaultListCellRenderer)list.getCellRenderer();
renderer.setHorizontalAlignment(SwingConstants.RIGHT);

关于java - 自定义 ListCellRenderer 不会改变背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com