簡體   English   中英

Java Swing:過濾數據后選擇Jtable的特定行

[英]Java Swing: Select specefic row of Jtable after filtering data

任務是過濾jTable中的數據並傳遞選定的值。 問題是,在過濾jTable中的數據之后,它會輸出舊值,該值位於過濾前的那個位置。

假設我有一個只有一列的表,值是1,2,3,4,5,6。 過濾后,jTable中只有一個值,即6。因此,它應該輸出6,但輸出為1。因為過濾前表中存在1。 在下面的代碼中,第一個函數根據文本字段中提供的文本過濾表。 第二功能輸出選擇值。 如何更新jTable,因此它根據過濾數據而不是原始表為我提供輸出。 謝謝。

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

        DefaultTableModel table=(DefaultTableModel)this.jTable_Search.getModel();
        String query=this.jTextField_searchRecord.getText();

        TableRowSorter<DefaultTableModel> tr=new TableRowSorter<DefaultTableModel>(table);
        jTable_Search.setRowSorter(tr);
        tr.setRowFilter(RowFilter.regexFilter("(?i)" + query));
    }                                                   

    private void jButton_LocateMouseClicked(java.awt.event.MouseEvent evt) {                                            
       int column = 0;
       int rows[]=this.jTable_Search.getSelectedRows();

       for(int i=0;i<rows.length;i++)
       {
           String value = jTable_Search.getModel().getValueAt(rows[i], column).toString();
           System.out.println(value);
       }       
    }             

表和模型中的選擇索引是兩個不同的東西。 但是您可以將一個轉換為另一個。 JTable API有一些轉換方法。 在您的情況下, convertRowIndexToModel方法很重要。 因此,您的代碼應如下所示:

private void jButton_LocateMouseClicked(java.awt.event.MouseEvent evt) {                                            
   int column = 0;
   int rows[]=this.jTable_Search.getSelectedRows();

   for(int i=0;i<rows.length;i++)
   {
       int modelRow = jTable_Search.convertRowIndexToModel(rows[i]);
       String value = jTable_Search.getModel().getValueAt(modelRow, column).toString();
       System.out.println(value);
   }       
}   

另一種可能性是使用表的getValueAt方法。

private void jButton_LocateMouseClicked(java.awt.event.MouseEvent evt) {                                            
   int column = 0;
   int rows[]=this.jTable_Search.getSelectedRows();

   for(int i=0;i<rows.length;i++)
   {
       String value = jTable_Search.getValueAt(rows[i], column).toString();
       System.out.println(value);
   }       
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM