我无法在jlist中显示一个数组列表

问题描述 投票:0回答:1

所以基本上,我创建了一个列表,其中包含我从用户那里获得的很多信息,并且我需要在列表中显示在列表上创建的“ 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,以防您有更好的工作方式,我只需要使用它们整个项目有很多显示列表的内容,有时我什至不得不让用户从列表中选择内容,这也是我也不知道该怎么做的,但是我不知道我是否可以在这里提出多个问题。该列表也将需要刷新,所有这些都可以,但是我想我可以解决。谢谢

java user-interface arraylist jframe jlist
1个回答
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); }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.