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

내 인터페이스에 두 개의 테이블이 있습니다. 첫 번째는 검색에 대한 모든 관련 항목을 표시합니다. 그 테이블을위한 방법입니다. 해당 테이블을 클릭하면 선택한 항목이 다른 테이블에 표시됩니다. –

답변

1

당신은 (올바른 것으로 보인다) 코드의 TableModel에 각 데이터 행을 추가 할 수 있습니다 :

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

결과적으로 TableModel에는 첫 번째 데이터 행이 누락됩니다.

위의 진술을 제거하십시오.

+0

나는 그 문장을 없애고 그 결과를 검사했다. 그러나 그것은 상황을 바꾸지 않았다. –