问题标签 [listcellrenderer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

templates - 未使用 JList 调用 getListCellRendererComponent

我创建了一个扩展 JList 的类“MyJList”。我使用 DefaultListModel 和一个名为“MyListCellRenderer”的自定义单元格渲染器。

这是一个运行良好的简单示例:

它运作良好。调用 getListCellRendererComponent 方法来显示单元格(输出中显示了几个“调用的函数”)。但是,我有以下警告:

我想最好在 JList 中指定对象的类型,所以我修改了以下行:

问题在于,通过此修改,不再调用 getListCellRendererComponent 方法(输出中没有“调用函数”)。

我不明白为什么。正常吗?如果是,您知道我如何指定列表包含 String 但仍然必须调用 getListCellRendererComponent 吗?

提前致谢。

0 投票
0 回答
38 浏览

java - JList 自定义 CellRenderer 不会显示 loader.gif,但会显示 PNG

我有一个带有自定义 ListCellRenderer 的 JList,在单元格中我想添加一个从http://www.ajaxload.info/获得的加载程序 gif

问题是它不会显示 gif,有时当它显示时它不会动画。

loader.gif ->在此处输入图像描述

这里是SSCCE

如何显示 GIF 并为 JList 的单元格设置动画?

谢谢!

0 投票
0 回答
189 浏览

java - imageicon 和 listcellrenderer 的图像质量差

我需要实现一个图像列表,用户可以通过拖放来移动。这就是我正在使用的代码:

然后我将文件加载为 BufferedImages 并将它们添加到模型中

我的 IonCellRenderer 类如下:

但是,当我运行代码时,它可以工作,但显示的图像质量很差,而且它们没有显示一些线条。我不知道这是否可能是因为图像的大小有点大(即 1488x2105),我将它们调整为 400x600。

我该如何解决?

谢谢你的建议, Stefano Franchini

0 投票
0 回答
102 浏览

java - 自定义单元格渲染阻止在 getListCellRendererComponent() 中加载图像

我有一个使用自定义单元格渲染器显示自定义对象(青蛙)的 JList。

青蛙对象包含一个图像列表,我让我的列表选择最新的一个来显示。它在一个缩略图文件中,所以我可以将它读入内存并显示它。但是我知道每次窗口移动或需要重绘窗口时 JList 都会重新渲染,这对性能非常不利,而且设计也不好。我遇到的问题是这个列表是动态的,所以我不能简单地在启动时加载所有图像,因为用户可以在运行时添加它们,它会自动更新列表。

有些人提到在构造函数中将图像加载到内存中并在getListCellRendererComponent()方法中设置它,但这似乎是不可能的,因为它只创建一个单元格渲染器并将其用于列表中的所有内容。我还通过打印出构造函数方法来验证这一点。因为我会有一个包含所有不同图像的青蛙列表,所以这真的没有意义。

这是我现在用来创建缩略图的代码。

我在我的方法中调用了这种方法,getListCellRendererComponent()我知道它会导致糟糕的性能,但我不明白如何将它缓存在内存中以供多只青蛙使用,并且只使用一个对象。也许是图像地图?我似乎找不到任何确凿的证据证明这样做的正确方法。

0 投票
0 回答
166 浏览

java - 在自定义渲染器中从 UIManager 中选择单元格 L&F 默认颜色

我有一个自定义的 JList 渲染器,它有一个图像和一些标签。我知道如何使用 isSelected 变量和 UIManager 默认 L&F 设置此列表的背景和前景。

这很好用,但我不确定 JLabel 的颜色,因为有“选定的”颜色键。As such when the item is selected it doesn't change color and has little contrast.

我找到了一个可以用来从中获取数据的键列表,UIManager但我不确定哪些键用于“选定的 JList 项目标签”。

例如,在 OSX 上,默认设置是带有黑色文本的白色背景。然而,在选择单元格背景为蓝色,文本变为白色。我想知道如何查找标签变成什么颜色(在本例中为白色)。Foreground/background/disabled 是我唯一能找到的。

0 投票
1 回答
742 浏览

java - JComboBox 单元格渲染器因 Windows 外观而失败

我正在编写一个使用本地系统外观的 Java 应用程序。在程序中有一个 ListCellRenderer,它呈现一个彩色点(自定义 JComponment),后跟一些给定对象的文本。这在使用 Swing 的默认 Metal 外观和感觉时效果很好。

但是,当我使用 Windows 外观时,单元格在下拉列表中正确呈现,但所选项目(当用户未选择其他选项时显示的项目)仅呈现文本和忽略彩色点。如果我更改渲染器以设置字体,则在下拉菜单和所选项目中都会观察到正确的字体,因此我知道至少部分使用了单元格渲染器。

我在网上阅读了一些关于导致此类问题的不同 LAF 的帖子,但没有遇到任何讨论我的特定问题的人。

如果有人好奇,这里是代码:

.

此外,这是自定义组件的代码,任何人都想尝试一下,看看我是否只是在这里做一些愚蠢的事情:

编辑: 我刚刚在 Ubuntu 12.04 上对此进行了测试,并且单元格渲染器在那里按预期工作(尽管 JCombobox 没有像没有应用自定义渲染器时那样渲染其外部边框)。

编辑:随着我越来越多地对此进行研究,似乎 JComboBox 上的 setEditor 方法可能存在某些问题,但是当不可编辑时,渲染器应用作方法状态的 javadoc:

设置用于在 JComboBox 字段中绘制和编辑所选项目的编辑器。仅当接收 JComboBox 是可编辑的时才使用编辑器。如果不可编辑,组合框将使用渲染器来绘制所选项目。

这似乎不是我所看到的行为。为了让 Windows LAF 的用户观察到我的单元格渲染器的所有部分,我必须做什么?

0 投票
1 回答
371 浏览

java - 无法从选定的多行 Jlist 中获取每个项目?

经过大量研究后,我仍然无法从选定的多行 jlist 中获取项目。这是我的 listSelectionListener 代码:

我还添加了一个按钮来打印所选项目:

但仍然得到相同的输出:

我期待输出“姓名:Paul0 年龄:0。” 我也尝试添加 DefaultlistModel 而不是 ListModel 但输出是相同的。请帮助我希望选定行内的每个项目。我使用的是 JDK8。以下是完整的工作代码。

0 投票
1 回答
418 浏览

java - 对选定条目使用 ListCellRenderers

我正在使用 ListCellRenderer 来编辑 JList 中条目的外观。一旦它们被选中(通过单击它们,此代码在单击事件中),我调用 ListCellRenderer 来更改文本的颜色。如果再次选择它们,我希望文本恢复正常颜色。我遇到的问题是,一旦我选择了第二个条目,第一个条目就会恢复其正常颜色。如何在实际取消选择之前将所选条目保持为所选颜色?这是我实际调用该函数的部分:

只是为了便于解释 selectedEntries 是一个包含每个选定条目文本的 ArrayList。

0 投票
2 回答
2119 浏览

java - 如何根据 JList 中的枚举设置不同的文本颜色?

编辑:这是@HovercraftFullOfEels 回答后更新的代码:

注意:我没有使用 HashMap,因为我想做几个动作,比如改变颜色和使字体变为粗体或斜体,而答案中提供的 HashMap 仅用于将特定颜色设置为特定枚举类型。

所以,这里是代码:

编辑2:这是我得到的和我想要得到的说明:

如果我运行@HovercraftFullofEels 给出的代码,稍作修改以更改文本:

我得到了这个结果: 我通过运行代码得到什么 每种类型的日志都会得到每个日志的最后一个文本......如果他们能得到我一开始给他们的文本,那就太好了,这样我就可以显示像“打开失败”这样的文本文件”带有ERROR类型和样式,“这个文件中给定的参数错误,将被忽略”带有READ_INFO样式和类型,“结果写入文件result.txt”作为ACTION,例如.

使用给出的代码,我不知道如何以及在何处设置此文本并将其设置为“静态”(这意味着它不会在此处更改)。

- - - - - - - - - 老问题 - - - - - - - - -

我使用JList作为日志查看器,我想添加一些不同颜色的行。例如,我有一个COMMENTACTIONERRORenum类型。COMMENT为深灰色,ACTION为蓝色,ERROR为红色。

我试图进行自定义ListCellRendered,但我无法弄清楚如何根据enum.

这是我的代码:

}

我得到的只是白底黑字...

0 投票
1 回答
289 浏览

java - 对 JComboBox 使用 setEditable() 时对齐重置

getRenderer()行使文本居中对齐。

当我使用ruleComboBox1.setEnabled(false)andruleComboBox1.setEditable(true)时,文本会回到我不想要的左侧。我怎样才能阻止这个?

我应该解释一下,当我禁用它时,我正在使用setEditable(true)它来保持文本的外观。ComboBox