Java Swing JList SetCellRenderer背景色不工作
早上好: 我有一个JList,其中包含一些数据。我从数据库中选择了数据,并尝试选择与JList中相同的数据和其他颜色的数据,但我尝试了所有可能的方法,并给了我很多错误。我的密码 此数组保存我要突出显示的标记。Java Swing JList SetCellRenderer背景色不工作,java,swing,highlight,jlist,renderer,Java,Swing,Highlight,Jlist,Renderer,早上好: 我有一个JList,其中包含一些数据。我从数据库中选择了数据,并尝试选择与JList中相同的数据和其他颜色的数据,但我尝试了所有可能的方法,并给了我很多错误。我的密码 此数组保存我要突出显示的标记。 final String[] segmentacion2 = suscriptor.getSegmentacion2().split(";"); for (int j = 0; j < segmentacion2.length; j++) { lis
final String[] segmentacion2 = suscriptor.getSegmentacion2().split(";");
for (int j = 0; j < segmentacion2.length; j++)
{
listaSegmentacion2.setSelectedValue(segmentacion2[j], true);
}
listaSegmentacion2.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected,
boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
for (int j = 0; j < segmentacion2.length; j++)
{
listaSegmentacion2.setSelectedValue(segmentacion2[j], true);
}
System.out.println(isSelected);
if(isSelected)
{
setBackground(Color.green);
}
else
{
setBackground(null);
}
return this;
}
});
这是为了预先选择标签。
final String[] segmentacion2 = suscriptor.getSegmentacion2().split(";");
for (int j = 0; j < segmentacion2.length; j++)
{
listaSegmentacion2.setSelectedValue(segmentacion2[j], true);
}
listaSegmentacion2.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected,
boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
for (int j = 0; j < segmentacion2.length; j++)
{
listaSegmentacion2.setSelectedValue(segmentacion2[j], true);
}
System.out.println(isSelected);
if(isSelected)
{
setBackground(Color.green);
}
else
{
setBackground(null);
}
return this;
}
});
有什么建议/帮助吗?我会很感激的。谢谢
此数组保存我要突出显示的标记
然后需要将数组中的数据与正在渲染的数据进行比较
最简单的方法是将数据从阵列复制到集合:
HashSet<String> values = new HashSet<String>();
for (String value: segmentation2)
values.add( value );
其思想是突出显示基于值,而不是选择
此数组保存我要突出显示的标记
然后需要将数组中的数据与正在渲染的数据进行比较
最简单的方法是将数据从阵列复制到集合:
HashSet<String> values = new HashSet<String>();
for (String value: segmentation2)
values.add( value );
我们的想法是突出显示基于值,而不是选择。请提供一个选项,以便我们也可以复制您的异常。请不要发布整个代码,而是创建一个小的可运行示例(最多100-150行代码)。顺便说一句:
setBackground(空)
看起来很难看。请改为尝试setBackground(list.getBackground())
。BTW2:必须删除渲染器中对setSelectedValue(对象)
的调用。我认为-这是您的问题的主要原因。BTW3:如果您只想用绿色背景绘制选择,您只需使用方法JList.setSelectionBackground(Color)
,并完全删除渲染器。这就是我需要的。非常感谢你!请提供一份报告,以便我们也可以复制您的例外情况。请不要发布整个代码,而是创建一个小的可运行示例(最多100-150行代码)。顺便说一句:setBackground(空)
看起来很难看。请改为尝试setBackground(list.getBackground())
。BTW2:必须删除渲染器中对setSelectedValue(对象)
的调用。我认为-这是您的问题的主要原因。BTW3:如果您只想用绿色背景绘制选择,您只需使用方法JList.setSelectionBackground(Color)
,并完全删除渲染器。这就是我需要的。非常感谢你!这就是我需要的。非常感谢你@死亡之枪,很高兴它有帮助。别忘了点击复选标记“接受”答案,这样人们就知道问题已经解决了。这就是我需要的。非常感谢你@死亡之枪,很高兴它有帮助。不要忘记点击复选标记“接受”答案,这样人们就知道问题已经解决了。