问题标签 [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.
templates - 未使用 JList 调用 getListCellRendererComponent
我创建了一个扩展 JList 的类“MyJList”。我使用 DefaultListModel 和一个名为“MyListCellRenderer”的自定义单元格渲染器。
这是一个运行良好的简单示例:
它运作良好。调用 getListCellRendererComponent 方法来显示单元格(输出中显示了几个“调用的函数”)。但是,我有以下警告:
我想最好在 JList 中指定对象的类型,所以我修改了以下行:
问题在于,通过此修改,不再调用 getListCellRendererComponent 方法(输出中没有“调用函数”)。
我不明白为什么。正常吗?如果是,您知道我如何指定列表包含 String 但仍然必须调用 getListCellRendererComponent 吗?
提前致谢。
java - JList 自定义 CellRenderer 不会显示 loader.gif,但会显示 PNG
我有一个带有自定义 ListCellRenderer 的 JList,在单元格中我想添加一个从http://www.ajaxload.info/获得的加载程序 gif
问题是它不会显示 gif,有时当它显示时它不会动画。
loader.gif ->
这里是SSCCE
如何显示 GIF 并为 JList 的单元格设置动画?
谢谢!
java - imageicon 和 listcellrenderer 的图像质量差
我需要实现一个图像列表,用户可以通过拖放来移动。这就是我正在使用的代码:
然后我将文件加载为 BufferedImages 并将它们添加到模型中
我的 IonCellRenderer 类如下:
但是,当我运行代码时,它可以工作,但显示的图像质量很差,而且它们没有显示一些线条。我不知道这是否可能是因为图像的大小有点大(即 1488x2105),我将它们调整为 400x600。
我该如何解决?
谢谢你的建议, Stefano Franchini
java - 自定义单元格渲染阻止在 getListCellRendererComponent() 中加载图像
我有一个使用自定义单元格渲染器显示自定义对象(青蛙)的 JList。
青蛙对象包含一个图像列表,我让我的列表选择最新的一个来显示。它在一个缩略图文件中,所以我可以将它读入内存并显示它。但是我知道每次窗口移动或需要重绘窗口时 JList 都会重新渲染,这对性能非常不利,而且设计也不好。我遇到的问题是这个列表是动态的,所以我不能简单地在启动时加载所有图像,因为用户可以在运行时添加它们,它会自动更新列表。
有些人提到在构造函数中将图像加载到内存中并在getListCellRendererComponent()
方法中设置它,但这似乎是不可能的,因为它只创建一个单元格渲染器并将其用于列表中的所有内容。我还通过打印出构造函数方法来验证这一点。因为我会有一个包含所有不同图像的青蛙列表,所以这真的没有意义。
这是我现在用来创建缩略图的代码。
我在我的方法中调用了这种方法,getListCellRendererComponent()
我知道它会导致糟糕的性能,但我不明白如何将它缓存在内存中以供多只青蛙使用,并且只使用一个对象。也许是图像地图?我似乎找不到任何确凿的证据证明这样做的正确方法。
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 是我唯一能找到的。
java - JComboBox 单元格渲染器因 Windows 外观而失败
我正在编写一个使用本地系统外观的 Java 应用程序。在程序中有一个 ListCellRenderer,它呈现一个彩色点(自定义 JComponment),后跟一些给定对象的文本。这在使用 Swing 的默认 Metal 外观和感觉时效果很好。
但是,当我使用 Windows 外观时,单元格在下拉列表中正确呈现,但所选项目(当用户未选择其他选项时显示的项目)仅呈现文本和忽略彩色点。如果我更改渲染器以设置字体,则在下拉菜单和所选项目中都会观察到正确的字体,因此我知道至少部分使用了单元格渲染器。
我在网上阅读了一些关于导致此类问题的不同 LAF 的帖子,但没有遇到任何讨论我的特定问题的人。
如果有人好奇,这里是代码:
.
此外,这是自定义组件的代码,任何人都想尝试一下,看看我是否只是在这里做一些愚蠢的事情:
编辑: 我刚刚在 Ubuntu 12.04 上对此进行了测试,并且单元格渲染器在那里按预期工作(尽管 JCombobox 没有像没有应用自定义渲染器时那样渲染其外部边框)。
编辑:随着我越来越多地对此进行研究,似乎 JComboBox 上的 setEditor 方法可能存在某些问题,但是当不可编辑时,渲染器应用作方法状态的 javadoc:
设置用于在 JComboBox 字段中绘制和编辑所选项目的编辑器。仅当接收 JComboBox 是可编辑的时才使用编辑器。如果不可编辑,组合框将使用渲染器来绘制所选项目。
这似乎不是我所看到的行为。为了让 Windows LAF 的用户观察到我的单元格渲染器的所有部分,我必须做什么?
java - 无法从选定的多行 Jlist 中获取每个项目?
经过大量研究后,我仍然无法从选定的多行 jlist 中获取项目。这是我的 listSelectionListener 代码:
我还添加了一个按钮来打印所选项目:
但仍然得到相同的输出:
我期待输出“姓名:Paul0 年龄:0。” 我也尝试添加 DefaultlistModel 而不是 ListModel 但输出是相同的。请帮助我希望选定行内的每个项目。我使用的是 JDK8。以下是完整的工作代码。
java - 对选定条目使用 ListCellRenderers
我正在使用 ListCellRenderer 来编辑 JList 中条目的外观。一旦它们被选中(通过单击它们,此代码在单击事件中),我调用 ListCellRenderer 来更改文本的颜色。如果再次选择它们,我希望文本恢复正常颜色。我遇到的问题是,一旦我选择了第二个条目,第一个条目就会恢复其正常颜色。如何在实际取消选择之前将所选条目保持为所选颜色?这是我实际调用该函数的部分:
只是为了便于解释 selectedEntries 是一个包含每个选定条目文本的 ArrayList。
java - 如何根据 JList 中的枚举设置不同的文本颜色?
编辑:这是@HovercraftFullOfEels 回答后更新的代码:
注意:我没有使用 HashMap,因为我想做几个动作,比如改变颜色和使字体变为粗体或斜体,而答案中提供的 HashMap 仅用于将特定颜色设置为特定枚举类型。
所以,这里是代码:
编辑2:这是我得到的和我想要得到的说明:
如果我运行@HovercraftFullofEels 给出的代码,稍作修改以更改文本:
我得到了这个结果: 每种类型的日志都会得到每个日志的最后一个文本......如果他们能得到我一开始给他们的文本,那就太好了,这样我就可以显示像“打开失败”这样的文本文件”带有ERROR类型和样式,“这个文件中给定的参数错误,将被忽略”带有READ_INFO样式和类型,“结果写入文件result.txt”作为ACTION,例如.
使用给出的代码,我不知道如何以及在何处设置此文本并将其设置为“静态”(这意味着它不会在此处更改)。
- - - - - - - - - 老问题 - - - - - - - - -
我使用JList作为日志查看器,我想添加一些不同颜色的行。例如,我有一个COMMENT、ACTION和ERRORenum
类型。COMMENT为深灰色,ACTION为蓝色,ERROR为红色。
我试图进行自定义ListCellRendered
,但我无法弄清楚如何根据enum
.
这是我的代码:
}
我得到的只是白底黑字...
java - 对 JComboBox 使用 setEditable() 时对齐重置
该getRenderer()
行使文本居中对齐。
当我使用ruleComboBox1.setEnabled(false)
andruleComboBox1.setEditable(true)
时,文本会回到我不想要的左侧。我怎样才能阻止这个?
我应该解释一下,当我禁用它时,我正在使用setEditable(true)
它来保持文本的外观。ComboBox