2017-12-26 5 views
0

: 검색 버튼을 클릭하면 그것이 file은 다음 file & 내부의 데이터와 검색 값과 일치 읽을 수는 jTable의 검색 결과를 표시합니다. 내가 직면하고jTable에서 파일을 읽고 검색하려면 어떻게해야합니까? 내가이 코드에서 수행 할

문제 : GPA를 선택하면 내가 다른 검색 값을 제공 한 후 다시 검색 버튼을 누르면 A + 다음은 A + 표시는 A- 모두 &는 테이블이 단지에 더 많은 데이터를 추가합니다.

솔루션이 필요 : 난 그냥 파일을 읽을 수 다시 다시 & 결과를 추가하지는 jTable 만 결과를 보여줍니다. 검색 버튼은 GPA & 클래스 열에서만 검색해야합니다. & GPA가 "A/B/C +"또는 "-"로 선택되면 검색 결과는 특정 GPA가 포함 된 데이터 만 제공해야합니다.

참고 : 검색 옵션을 변경하고 싶지 않습니다.

저는 Java에서 전체 초보자입니다. 어떤 종류의 도움이라도 인정 될 것입니다! :)

Screenshot of the UI

private void srchBtnActionPerformed(java.awt.event.ActionEvent evt) {           

    //file read 
    String filepath = "E:\\Netbeans workspace\\modified\\Project\\Info.txt"; 
    File file = new File(filepath); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     model = (DefaultTableModel)jTable1.getModel(); 

     Object[] tableLines = br.lines().toArray(); 

     for (int i = 0; i < tableLines.length; i++){ 
      String line = tableLines[i].toString().trim(); 
      String[] dataRow = line.split("/"); 
      model.addRow(dataRow); 

     } 

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

    //search from file 
    String bGroupSrch = (String) jComboBoxBGroup.getSelectedItem(); 
    if(positiveRBtn.isSelected()) 
     bGroupSrch = bGroupSrch + "+"; 
    else if(negativeRBtn.isSelected()) 
     bGroupSrch = bGroupSrch + "-"; 

    String areaSrch = (String)jComboBoxArea.getSelectedItem(); 

    if (bgGroup.getSelection() != null) { 

     filter(bGroupSrch); 
     filter(areaSrch); 
    } else { 
     SrchEMsg sem = new SrchEMsg(this); 
     sem.setVisible(true); 
     sem.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
    } 
} 

//Filter Method 
private void filter(String query){ 
    TableRowSorter<DefaultTableModel> tr= new TableRowSorter<DefaultTableModel>(model); 
    jTable1.setRowSorter(tr); 

    tr.setRowFilter(RowFilter.regexFilter(query)); 
} 

답변

1

테이블이 단지에 더 많은 데이터를 추가합니다.

model.setRowCount(0); 

테이블의 테이블 모델의 데이터를 지울 수 :

당신은 당신이 검색을 시작합니다.

더 쉬운 방법은 항상 데이터를 다시로드하지 않는 것입니다. 대신 테이블에서 사용하는 필터 만 변경하면됩니다.

Sorting and Filtering의 스윙 튜토리얼 섹션을 읽어보십시오. 문자가 입력 될 때마다이 코드가 필터를 대체합니다.

검색 옵션이 변경되면 코드가 필터를 변경합니다.

+0

아, 정말 고마워요. 모든 것이 지금 작동 중입니다! 고마워요! –

관련 문제