Java 有没有办法动态更改toString方法为自定义类显示的属性?
我正在Java GUI程序中创建一个JList,该程序将通过名为friendsList的ArrayList填充自定义的“SteamFriends”类:Java 有没有办法动态更改toString方法为自定义类显示的属性?,java,Java,我正在Java GUI程序中创建一个JList,该程序将通过名为friendsList的ArrayList填充自定义的“SteamFriends”类: friendsListJList.setModel(new javax.swing.AbstractListModel() { SteamFriend[] friendListArr = friendsList.toArray(new SteamFriend [0]); public int getSize() { return
friendsListJList.setModel(new javax.swing.AbstractListModel() {
SteamFriend[] friendListArr = friendsList.toArray(new SteamFriend [0]);
public int getSize() { return friendListArr.length; }
public SteamFriend getElementAt(int i) { return friendListArr[i]; }
});
现在,toString()函数返回SteamFriend对象的friendName,但我想知道是否可以更改它,以便控制它返回的属性以及最佳做法
如果我想用按年龄排序的朋友列表(例如)填充JList,那么如何更改toString()方法以显示年龄?通过SteamFriend对象中的静态变量(public static int variableToDisplay),也许?最好不要使用
toString()
向用户显示数据,而是最好将其用作调试工具。对于JLists,我建议您改用自定义单元格渲染器,该渲染器是您编写的,用于准确显示所需信息的渲染器
e、 g.我在一个程序中用过一个
class LabelTextPairListRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
LabelTextPairList labelTextPairList = (LabelTextPairList) value;
if (labelTextPairList == null) {
value = "";
} else {
value = labelTextPairList.getName();
}
return super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
}
}
类LabelTextPairListRenderer扩展了DefaultListCellRenderer{
@凌驾
公共组件GetListCellRenderComponent(JList列表、对象值、,
整型索引,布尔型isSelected,布尔型cellHasFocus){
LabelTextPairList LabelTextPairList=(LabelTextPairList)值;
如果(labelTextPairList==null){
value=“”;
}否则{
value=labelTextPairList.getName();
}
返回super.getListCellRenderComponent(列表、值、索引、isSelected、,
细胞聚焦);
}
}
这是以某种方式进入JList组件的初始化还是进入自定义类并在包含在JList中时自动调用?@FedericoPettinella:根据,在JList上调用setCellRenderer(…)
并传入渲染器:myList.setCellRenderer(new MyCellRenderer())代码>