2016-09-09 15 views
-2

mysqlデータベースのテーブルからデータを取得し、その結果をJTableに取り込もうとしています。現在のところ、UIには3つのタブがあり、最初の2つは入力画面であり、正常に動作します。 3番目のタブは、(ボタンが押された後に)クエリを実行して、結果をJTableに表示しようとしています。エラーメッセージは表示されませんが、画面には表が表示されません。以下は私のコードです。どんな支援も大歓迎です。ユーザー名とパスワードは一般名に置き換えられています。私はそれを動作させるまでクエリも簡素化されています。 system.out.printは、データを取得しているかどうかを確認して確認するだけでした。Java UI - テーブルを作成して作成しません

private void salePropertyActionPerformed(java.awt.event.ActionEvent evt) {            
    String sSelectQuery = ""; 
    Statement statement=null; 
    Connection conn = null; 
    //PreparedStatement pStatement =null; 
    JPanel panel= spPanel; 

    TableColumn column; 
    JTable spTable = jTable1; 
    Vector columnNames = new Vector(); 
    Vector data = new Vector(); 
    spTable = new JTable(data,columnNames); 
    JScrollPane scrollPane = new JScrollPane(spTable); 
    panel.add(scrollPane); 

    try { 
     String myDriver = "com.mysql.jdbc.Driver"; 
     String myURL = "jdbc:mysql://localhost:3306/realestate?autoReconnect=true&useSSL=false"; 
     Class.forName(myDriver); 
     conn=DriverManager.getConnection(myURL,"root","jul1664bd"); 

    /*Storing SQL statement*/ 
    sSelectQuery ="SELECT propertyID, propertyPrice FROM property"; 


    statement = conn.createStatement(); 
     try (ResultSet rs = statement.executeQuery(sSelectQuery) //executes the query 
     ) { 
      ResultSetMetaData metaData = rs.getMetaData(); 
      int columns = metaData.getColumnCount(); 
      for(int i = 1; i<=columns; i++){ 
       columnNames.addElement(metaData.getColumnName(i)); 
      } 

      while (rs.next()){ 
       Vector row = new Vector(columns); 
       for (int i=1; i<=columns; i++){ 
        row.addElement(rs.getObject(i)); 
       } 
       data.addElement(row); 
       System.out.println(data); 
      } 
      rs.close(); 


    for (int i=0; i<spTable.getColumnCount(); i++){ 
     column=spTable.getColumnModel().getColumn(i); 
     //column.setMaxWidth(250); 

    } 


     } 


    statement.close(); 
    } catch (SQLException e) { 
     System.err.println("An exception ocurred"); 
     System.err.println(e.getMessage()); 

    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(realEstateUI.class.getName()).log(Level.SEVERE, null, ex); 
    } 


    JOptionPane.showMessageDialog(this,"Query Complete"); 
}                

/** 
+0

'spPanel'のレイアウトは何ですか? – VGR

答えて

3

UIが表示された後にJTableを追加しようとしています。追加に影響を及ぼすには、revalidateに続いてrepaintと呼ぶ必要があります。代わりに、JTableをUIの作成時に(表示される前に)追加し、JTableのモデルを入力してくださいsalePropertyActionPerformed

+2

元のポスター:この回答が役に立たない場合は、有効な[mcve]を作成して投稿することで質問を改善する必要があります。 –

+0

ご連絡ありがとうございます。 NetBeansを使用してフォームUIを作成しています。 jTable1をタブ付きパネルに追加し、コードを少し変更しました。私は上記のコードを更新しましたが、同じ結果を得ています。 –

+0

@SelliS私の答えでお勧めですか? – copeg

関連する問題