gpt4 book ai didi

java - 是否可以更改 Java Swing jList 中项目的名称*显示*?

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:08 24 4
gpt4 key购买 nike

我有一个使用 DefaultListModel 的 jList,我用从列表中获得的对象填充它(上下文:对象是 ABM 系统中的一种代理)。

是否可以更改 jList 中对象的显示名称?我还没有找到关于这个的任何东西......

最佳答案

如果您想要查看的信息(而不是 toString() 吐出的任何信息)包含在对象本身中,最直接的“Swing”方法是通过使用 ListCellRenderer 来实现这一点。 .将 ListCellRenderer(实际上是任何 CellRenderer)想象成用于绘制列表中每个对象的橡皮图章。对象被传入,你设置组件,组件绘制你的对象,然后移动到下一个对象。 CellRenderer 从来没有任何状态。

考虑这个例子:

// Extend DefaultListCellRenderer, takes care of most of the work for you
public class ExampleListCellRenderer extends DefaultListCellRenderer
{
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
// I know DefaultListCellRenderer always returns a JLabel
// super setups up all the defaults
JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelect, cellHasFocus);

// "value" is whatever object you put into the list, you can use it however you want here

// I'm going to prefix the label text to demonstrate the point

label.setText("PRE:" + label.getText());

return label;

}
}

// Some time later...

JList list = new JList();
list.setCellRenderer(new ExampleListCellRenderer());

关于java - 是否可以更改 Java Swing jList 中项目的名称*显示*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518603/

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