0

我有学校,这是另一个班级的一系列学校物品。

我一辈子都不能在 JList 中添加和显示这个数组。

 public class SchoolChooser extends JPanel {

      private School[] schools;

有什么帮助吗?谢谢你。

4

1 回答 1

2

在教程中阅读有关 JList 的更多信息。

这是给你的简单例子。我使用JListwithDefaultListModel和基于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;
    }

}

结果:

在此处输入图像描述

于 2013-11-11T20:59:50.903 回答