2015-02-06 40 views
-1

我的目标是将JList与来自我的数据库的数据放在两个JTextField上,但我不知道如何去做。你们和女孩是否知道错误是什么以及我如何解决它? (变量personList拥有其中的所有数据,只需要把它JList的。但是,这变personList是一个ArrayList的。)添加JList以显示基本的数据库信息

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

}

谢谢你,有一个愉快的一天。

+0

如何使用jlist?在提供的代码中,您可以将标签添加到面板。你可以找到更多的信息以及javadocs中的jlists示例:http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html – Grims 2015-02-06 13:10:25

+0

@Grims我确实找到了webside helfull,但是我认为他们没有任何与ArrayListy 。所以我在那里读了一些 – Bono 2015-02-06 13:25:31

+0

你有一个错误(那么......它是什么?)或者你不知道该怎么做? – 2015-02-06 13:30:34

回答

1

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

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

看看How to Use Lists进一步的信息。

相关问题