我无法在jlist中显示arraylist

时间:2019-11-10 16:12:13

标签: java swing arraylist jframe jlist

因此,基本上,即时消息会创建一个包含我从用户那里获得的大量信息的列表,并且需要在列表中同时显示创建的“ Estudiante”。所以这是我第一次尝试过,但是它告诉我setListData是用于数组的,所以我尝试了其他发现包括使用.toArray(array)的东西,但是它也没有起作用。 只是为了弄清楚我复制了第一个代码是什么模型

public class VentanaEstudiante extends javax.swing.JFrame {
    private Sistema modelo;
    /**
     * Creates new form VentanaEstudiante
     */
    public VentanaEstudiante(Sistema unSistema) {
        modelo = unSistema;
        this.setSize(400, 280);
        initComponents();
    }
private void BotonCrearEstudianteActionPerformed(java.awt.event.ActionEvent evt) {                                                     
        Estudiante unEst=new Estudiante(NombreEstudiante.getText(), Integer.parseInt(CedulaEstudiante.getText()),MailEstudiante.getText(), Integer.parseInt(NumeroEstudiante.getText()), Integer.parseInt(SemestreEstudiante.getText()));
        modelo.agregarEstudiante(unEst);
        ListaEstudiantesJ.setListData((modelo.getListaEstudiantes()).toArray());

Estudiante有一个toString方法,超类也有。

public String toString(){
        return super.toString() + "Numero:" + this.getNumero() + "Semestre: " + this.getSemestre();
    }

这里有我的列表,我只复制了listaEstudiantes方法,因为这是我现在要询问的方法。 Sistema此类没有任何toString方法,因为我一直认为此arraylist不需要一个。


public class Sistema {
    private ArrayList<Estudiante> listaEstudiantes;
    private ArrayList<Docente> listaDocentes;
    private ArrayList<Equipo> listaEquipos;

    public Sistema(){
        listaEstudiantes = new ArrayList<>();
        listaDocentes= new ArrayList<>();
        listaEquipos=new ArrayList<>();
    }

    public void agregarEstudiante(Estudiante unEstudiante){
        listaEstudiantes.add(unEstudiante);
    }

    public ArrayList<Estudiante> getListaEstudiantes(){
        return listaEstudiantes;
    }

我需要使用ArrayList,以防万一您可能会更好地工作,我只需要使用它们 整个项目有很多显示列表的内容,有时我什至不得不让用户从列表中选择内容,我也不知道该怎么做,但是我不知道我是否可以在这里问多个问题。该列表也将需要刷新,所有这些都可以,但是我想我可以解决。谢谢

1 个答案:

答案 0 :(得分:0)

JList.setListData()有两个变体,一个期望元素数组,另一个期望元素向量。

这两种方法在后台创建了AbstractListModel匿名子类的实例,并将该实例传递给JList.setModel()

您可以轻松地为任何List实例实现类似的代码:

static <E> void setListData(JList<E> jList, List<? extends E> listData) {
    jList.setModel(new AbstractListModel<E>() {
        public int getSize() { return listData.size(); }
        public E getElementAt(int i) { return listData.get(i); }
    });
}