0
我有一個填充了數據的表。我有一個組合框,用戶應該能夠選擇其中一個選項,點擊過濾按鈕,表格將顯示過濾結果。我試圖使用tableRowSorter.setRowFilter方法,但似乎無法弄清楚它是如何工作的。有人會介意解釋該方法的工作原理,或者有任何建議嗎?謝謝使用組合框過濾JTable結果
我有一個填充了數據的表。我有一個組合框,用戶應該能夠選擇其中一個選項,點擊過濾按鈕,表格將顯示過濾結果。我試圖使用tableRowSorter.setRowFilter方法,但似乎無法弄清楚它是如何工作的。有人會介意解釋該方法的工作原理,或者有任何建議嗎?謝謝使用組合框過濾JTable結果
瞭解更多關於Sorting and Filtering in JTable
。 下面是簡單的例子與RowFilter
,檢查:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
public class Example extends JFrame {
private JTable table;
private DefaultTableModel model;
private TableRowSorter<DefaultTableModel> sorter;
public Example() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponents();
pack();
setVisible(true);
}
public static void main(String... strings) {
new Example();
}
private void initComponents() {
JPanel p = new JPanel();
final JComboBox<String> box = new JComboBox<>(new String[]{"","1","2","3"});
JButton b = new JButton("filter");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
RowFilter<DefaultTableModel, Object> rf = RowFilter.regexFilter(box.getSelectedItem().toString(), 0);
sorter.setRowFilter(rf);
}
});
p.add(box);
p.add(b);
table = new JTable(model = new DefaultTableModel(3,3));
sorter = new TableRowSorter<DefaultTableModel>(model);
table.setRowSorter(sorter);
add(p,BorderLayout.SOUTH);
add(new JScrollPane(table));
}
}
未必是最有效的方式,但你可以做一個新的表與過濾的結果並刷新框架。 – ola