2017-12-26 21 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のSwingチュートリアルのセクションを読んでください。そのコードは、文字が入力されるたびにフィルタを置き換えます。

検索オプションを変更すると、コードによってフィルタが変更されます。

+0

ああ、ありがとう、すべてが今働いている!どうもありがとう! –

関連する問題