添加JList以显示基本数据库信息



我的目标是在2个JTextFields上放一个JList,里面有我数据库中的数据,但我不知道怎么做。你们知道错误是什么吗?我该怎么解决吗?(变量人员列表中包含所有数据。只需将其放在JList中即可。但此变量人员列表是一个ArrayList。)

public class Datenbank2 extends JFrame {
public Datenbank2() {
    super("Datenbank der Lehrlinge 1 Lehrjahr");
    JPanel centerPanel = new JPanel();
    JPanel southPanel = new JPanel();
    JPanel linkesPanel = new JPanel();
    this.setBounds(600, 300, 500, 450);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);

    try {
        Class.forName("org.sqlite.JDBC");
        Connection connection = DriverManager
                .getConnection("jdbc:sqlite:C://Users/N-YP/workspace/UebungJava/ch/nyp/uebungen/datenbanken/SqLiteDB.db");
        Statement statement = connection.createStatement();
        ResultSet rs = statement.executeQuery("SELECT * FROM Person");
        ArrayList<JLabel> personList = new ArrayList<JLabel>();
        while (rs.next()) {
            String vorname = rs.getString("Vorname");
            String nachname = rs.getString("Nachname");
            personList.add(new JLabel(vorname + " " + nachname));
            System.out.println(vorname + "  " + nachname);
        }

        JTextField eingVorname = new JTextField();
        JTextField eingNachname = new JTextField();
        eingVorname.setPreferredSize(new Dimension(230, 30));
        eingNachname.setPreferredSize(new Dimension(230, 30));
        BorderLayout borderLayout = new BorderLayout();
        this.getContentPane().setLayout(borderLayout);
        this.add(centerPanel, BorderLayout.CENTER);
        this.add(southPanel, BorderLayout.SOUTH);
        centerPanel.add(linkesPanel, BorderLayout.WEST);
        FlowLayout flowLayout = new FlowLayout();
        centerPanel.setLayout(flowLayout);
        for (JLabel personLabel : personList) {
            centerPanel.add(personLabel);
        }
        southPanel.setLayout(flowLayout);
        southPanel.add(eingVorname);
        southPanel.add(eingNachname);
    }
    catch (Exception exc) {
        exc.printStackTrace();
        System.exit(0);
        System.out
                .println("Datenbank geöffnet (muss später aber wieder geschlossen werden).");
    }
}
public static void main(String[] args) {
    Datenbank2 javamitdb = new Datenbank2();
    javamitdb.setVisible(true);
}

}

谢谢你,祝你今天愉快。

在while循环中使用DefaultListModel及其addElement()方法来添加每个结果,如下所示:

listModel = new DefaultListModel();
while (rs.next()) {
        String vorname = rs.getString("Vorname");
        String nachname = rs.getString("Nachname");
        listModel.addElement(vorname + " " + nachname);
        System.out.println(vorname + "  " + nachname);
    }
//then create a list with this model
list = new JList(listModel);

有关详细信息,请参阅如何使用列表

最新更新