Я не могу показать ArrayList в JList - PullRequest
0 голосов
/ 10 ноября 2019

Так что в основном я создаю список с большим количеством информации, которую я получаю от пользователя, и мне нужно отобразить это «Estudiante», созданное в виде списка. Итак, это то, что я впервые попробовал, но он говорит мне, что setListData предназначен для массивов, поэтому я попробовал другую вещь, которую я обнаружил, которая включает использование .toArray (массив), но это тоже не сработало. Просто чтобы уточнить, что такое modelo, я скопировал этот первый код

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, потому что это те, о которых я сейчас спрашиваю. У этого класса АФК "Система" нет методов toString, потому что я думал, что этот массив не нужен.


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 голосов
/ 10 ноября 2019

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); }
    });
}
...