[英]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.