2016-10-01 4 views
1

私はプログラミングが初めてで、netbeans 8.1を使ってプログラムをコーディングしました。私のプログラムは、jTableで検索されるすべての関連項目を表示するためのものです。そして、別のjTableで特定の項目を選択することができます。私はrs2xmlを使用してjTableのメソッドを作成し、正常に動作します。しかし、私はそれを使用した後、私の検索は間違っています。それは検索のための正しい項目を表示しません。ライブラリ検索からrs2xml.jarを削除すると正しく動作しますが、アイテムを選択するとjTableに表示されません。私はこれを理解できません。ここrs2xml.jarを使用せずにjTableのメソッドを作成できますか?

は、検索項目のためのコードです:

 private void txtSearchKeyReleased(java.awt.event.KeyEvent evt) {          

    try { 

     @SuppressWarnings("LocalVariableHidesMemberVariable") 
     ResultSet rs = oilmart.getConnection().createStatement().executeQuery("SELECT * FROM stock WHERE Item_Name LIKE '%" + txtSearch.getText() + "%'"); 
     if (rs.next()) { 

      billinfo(); 
      txtPlace.setText(rs.getString("Place")); 
     } else { 

      JOptionPane.showMessageDialog(this, "Result not found", null, JOptionPane.ERROR_MESSAGE, null); 

     } 

    } catch (SQLException | HeadlessException e) { 
    } 

    // TODO add your handling code here: 
}  

そして、これは私がrs2xml.jarを使用して作成したテーブル方式です:

public void billinfo() { 

    DefaultTableModel dtm = (DefaultTableModel) tblBillinfo.getModel(); 
    dtm.setRowCount(0); 

    try { 
     @SuppressWarnings("LocalVariableHidesMemberVariable") 
     ResultSet rs = oilmart.getConnection().createStatement().executeQuery("SELECT * FROM stock WHERE Item_Name LIKE '%" + txtSearch.getText() + "%'"); 

     while (rs.next()) { 

      Vector v = new Vector(); 
      v.add(rs.getString("Item_No")); 
      v.add(rs.getString("Item_Name")); 
      v.add(rs.getString("Qty")); 
      v.add(rs.getString("Price_per_Qty")); 
      v.add(rs.getString("Place")); 

      buy_price = Integer.parseInt(rs.getString("Price_per_Qty")); 

      dtm.addRow(v); 
      tblBillinfo.setModel(DbUtils.resultSetToTableModel(rs)); 
     } 

    } catch (Exception e) { 
    } 

} 

そして、これは、特定の項目を選択するためのものである:

 private void tblBillinfoMouseClicked(java.awt.event.MouseEvent evt) {           
    x++; 

    int r = tblBillinfo.getSelectedRow(); 

    String no = tblBillinfo.getValueAt(r, 0).toString(); 
    String name = tblBillinfo.getValueAt(r, 1).toString(); 
    String buy = tblBillinfo.getValueAt(r, 3).toString(); 

    buy_price = (int) tblBillinfo.getValueAt(r, 3); 

    String plc = tblBillinfo.getValueAt(r, 4).toString(); 

    tblBill.setValueAt(no, x, 0); 
    tblBill.setValueAt(name, x, 1); 
    tblBill.setValueAt(buy, x, 2); 
    txtPlace.setText(plc); 


}           

これを理解するのを手伝ってください。ありがとう。

dtm.addRow(v); 

しかし、その後、あなたの非常に次の文がResultSet内のデータの残りの行で最初の行を置き換えます。

+0

「jTableのメソッドを作成する」という意味を明確にすることはできますか? – David

+0

私は自分のインターフェースに2つのテーブルを持っています。最初に、検索に関連するすべての項目が表示されます。そのテーブルのためのメソッドです。その表をクリックすると、選択した項目が他の表に表示されます。 –

答えて

1

あなたは(正しいように見える)コードのTableModelにデータの各行を追加することがあります:

その結果、TableModelにはデータの最初の行が欠落します。

上記の文を削除してください。

+0

私はそのステートメントを取り除き、結果をチェックしました。それは状況を変えなかった。 –

関連する問題