2015-02-06 2 views
-1

Моя цель - разместить JList с данными из моей БД над 2 JTextFields, но я не знаю, как это сделать. Вы, ребята и девочки, знаете, что такое ошибка, и как я могу это исправить? (Переменная 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? В прилагаемом коде вы добавляете метки на панель. Вы можете найти больше информации, а также примеры jlists в javadocs: http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html – Grims

+0

@Grims Я нашел веб-интерфейс, но Я думаю, что у них нет ничего с ArrayListy . Итак, я прочитал еще кое-что там – Bono

+0

У вас есть ошибка (так ... что это?) Или вы не знаете, как что-то сделать? –

ответ

1

Хорошо использовать 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); 

Взгляните на How to Use Lists для получения дополнительной информации.