2015-02-06 4 views
-1

내 목표는 2 JTextFields를 통해 내 DB의 데이터가있는 JList를 넣는 것입니다.하지만 그 방법을 모릅니다. 너희들은 실수가 무엇인지 어떻게 고칠 수 있는지 알고 있니? 가 (변수 personList는 모든 데이터를 가지고있다. 그냥 JList의에 넣어해야합니다. 그러나이 변수 personList는 ArrayList에 있습니다.)기본 DB 정보를 표시하는 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

+0

@Grims 웹 사이트 helfull을 찾았지만 나는 그들이 ArrayListy와 아무 것도 없다고 생각한다 . 그래서 나는 거기에 더 많은 것을 읽었습니다. – Bono

+0

당신은 실수를했습니다 (그래서 ... 그것은 무엇입니까?) 또는 당신은 무언가를하는 방법을 모릅니다. –

답변

1

그럼 다음과 같이, 각각의 결과를 추가 할 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); 

은 자세한 내용은 How to Use Lists를 살펴 보자.