我有学校,这是另一个班级的一系列学校物品。
我一辈子都不能在 JList 中添加和显示这个数组。
public class SchoolChooser extends JPanel {
private School[] schools;
有什么帮助吗?谢谢你。
我有学校,这是另一个班级的一系列学校物品。
我一辈子都不能在 JList 中添加和显示这个数组。
public class SchoolChooser extends JPanel {
private School[] schools;
有什么帮助吗?谢谢你。
在教程中阅读有关 JList 的更多信息。
这是给你的简单例子。我使用JList
withDefaultListModel
和基于DefaultListCellRenderer
. 我写了我自己的学校课程,用你的代替它。
class Example extends JFrame {
private DefaultListModel<School> model;
private School[] schools;
public Example() {
schools = new School[]{
new School("test1",1),
new School("test2",2),
new School("test3",3),
};
JList<School> list = new JList<>(model = new DefaultListModel<>());
for(School school : schools){
model.addElement(school);
}
list.setCellRenderer(getCellRenderer());
add(new JScrollPane(list));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private ListCellRenderer<? super School> getCellRenderer() {
return new DefaultListCellRenderer(){
@Override
public Component getListCellRendererComponent(JList<?> list,
Object value, int index, boolean isSelected,
boolean cellHasFocus) {
School s = (School) value;
Component listCellRendererComponent = super.getListCellRendererComponent(list, s.getNumber()+"/"+s.getName(), index, isSelected,cellHasFocus);
return listCellRendererComponent;
}
};
}
public static void main(String...strings ){
new Example();
}
}
我的School
班级:
public class School {
private String name;
private Integer number;
public School(String name, Integer number){
this.setName(name);
this.setNumber(number);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
}
结果: