2015-02-06 69 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進一步的信息。

相關問題