2016-10-01 58 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); 


}           

請幫我弄清楚這一點。謝謝。

+0

你能澄清你的意思是「爲jTable創建一個方法」嗎? – David

+0

我在我的界面中有兩個表格。第一個顯示搜索的所有相關項目。該方法適用於該表。當我們單擊該表時,所選項目將顯示在另一個表上。 –

回答

1

你的代碼(這似乎是正確的),以每行數據添加到TableModel的:

dtm.addRow(v); 

但隨後你第二天的聲明取代第一行數據的ResultSet中剩餘的行:

tblBillinfo.setModel(DbUtils.resultSetToTableModel(rs)); 

結果是你的TableModel將會丟失第一行數據。

只是擺脫了上述說法。

+0

我已經擺脫了這種說法,並檢查了結果。但並沒有改變這種情況。 –

相關問題