问题标签 [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.
java - ListCellRendererComponent() 方法更新 JList 的所有对象(元素),类似于上次添加的元素
嗨,我实现了一个JList
包含JLabel
s 作为元素的。我的目标是为服务器/客户端聊天应用程序实现联系人列表。因此,当客户端连接到服务器时,JList 将构建以显示他/她的联系人列表。我选择使用 JLabels 因为它们也可以有图标和文本。但是,我在覆盖 cellrenderer 方法时遇到了一些麻烦。每当客户端联机/脱机时,JList 都会更新其状态并将所有项目设置为类似于最后添加的项目。是这样的,
这是第一次将离线状态客户端添加到一个人的朋友列表中;
之后,这是第二次添加不同的客户端
最后第三次...
此外,我记得在教程中提到 JList 覆盖痛苦方法并在列表发生更改时一次又一次地绘制整个元素。好吧,实际上我是这个渲染主题的新手,这件事变得非常烦人。在这里你可以看到我的渲染器类; 渲染器示例
并在我的主类中以这种方式将元素添加到模型中
并且还createPanel()
返回一个类似的 JLabel;
我希望我已经清楚我的问题。我必须实现这一点,当联系人更改他/她的状态或添加联系人时,此操作不应影响其他元素。我将非常感谢您的每一个答案(如果您可以添加简短的解释说明您所做的事情和原因,我将不胜感激。)无论如何,谢谢
java - 如何在 DefaultListModel 中添加 JButton?
我正在制作战舰游戏,我正在尝试找出一种方法来控制窗格中的按钮,以便我可以拖放它们并使用默认列表模型跟踪它们的索引。如果我添加字符串或 ImageIcons 它工作正常但有了按钮,我得到了不同的东西。
这是我的代码:
如果我添加按钮,我会得到这个结果:
所以我的问题是:如何使按钮正常显示而不是默认列表模型中的文本?
java - CellRenderer 项目重绘
我创建了自己的 CellRenderer,其中包括一些字符串和 JList 项目中的 JProgressBar ...但是 JProgressBar 和整个 JList 项目将绘制一次,我正在寻找一种重新绘制项目的方法......我试过了启动一个线程,这将永久重新绘制......但我不知道我必须重新绘制什么才能得到结果......
JList repaint ...没有结果 CellRenderer repaint ...没有结果 JFrame repaint ...没有结果
有人了解我的问题并知道出路吗?
非常感谢!
更新:[更新已删除]
下一个更新:
java - ListCellRenderer 返回 Null 指针
这是我在这里的第一篇文章,所以如果它很糟糕,请提前道歉......
我正在尝试使用自定义 ListCellRenderer 将自定义类列表中的项目添加到 JList 中。每个都有我想添加到一行的各种东西,列表中的每个都需要一个新行:
我找出列表的内容以确保它不为空,但上面突出显示的行返回一个空指针。
我对 Java 的了解仍然有限,因此非常感谢任何(简单!)帮助。
java - 在 JList 项之间添加空格
如何在JList
项目之间添加空格?有办法吗?
在此图像上,白色是背景,黄色是自定义DefaultListCellRenderer
的JList
,我希望每个JList
项目彼此之间有 5 个像素的空间。
java - 为 JComboBox 显示一个不可选择的默认值
我有一个JComboBox
包含三个 Items {"Personel", "Magasinier", "Fournisseur"}
。
我希望它JComboBox
显示 value "Choisir une option :"
,这是一个不可选择的值。
我在之后尝试了这段代码initComponents();
:
但它不起作用。
我怎样才能做到这一点 ?
java - JList 里面有 3 个 JLabel
我正在寻找一种可能性,List
在Java
. 所以我想我可以使用JList
并制作一个自己的CellRenderer
. 问题是我想在列表的一项中显示名称、日期和评论。
这怎么能用 aJList
和 a来实现CellRenderer
?还是我必须使用其他东西而不是JList
?
java - 换行在 JList 单元内不起作用
我正在使用 JList 来包装一些显示给用户的可变只读文本。每一行文本都呈现在一个基于JTextArea的列表单元格中,即
这个渲染器被列表使用:
JList 嵌入在 JScrollPane 中。
我这样做是因为这里的典型使用模式是使用箭头键,而不是鼠标。这允许突出显示当前单元格,使用户清楚正在发生的事情。以前的实现,使用单个 JTextArea,需要用户多次按下向下箭头,直到不可见的插入符号(不可见,因为它不可编辑)到达可能发生滚动的点(窗口底部或顶部)。
问题是,即使 InfoTextCellRenderer 打开换行和自动换行,当显示文本时,也不会发生换行。
是什么阻止了换行的发生?
java - ListCellRenderer 转换异常
这是自定义渲染器的代码:
一切正常,除非 中没有项目DefaultComboBoxModel
,在这种情况下,使用valuegetListCellRendererComponent
调用,这会导致错误,因为它需要一个对象。String
""
Facility
为什么它会这样?
更新:我知道错误是由于强制转换并且我知道如何使用instance of
,问题是为什么它会以这种方式运行(函数),如果没有元素,我希望它根本不会被调用,但是为什么叫它?毕竟,如果没有元素,它会格式化什么。
更新:可以使用下面接受的答案。至于为什么会这样,是因为列表必须有一个空字符串;您知道第一次初始化组合框时默认选择的空字符串。
java - Java遍历包含JPanel的JList - JLabel
我正在尝试遍历每个项目包含的 JList:JPanel - JLabel
目前我拥有的是:
我得到的输出是:
项目 = javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
相反,我想访问 JPanel 内的文本。
怎么可能做到这一点?
编辑:这就是我将 JPanel 添加到 JList 的方式
所以我想找到的文字是“你好”