JTable là một lớp con của JComponent để hiển thị cấu trúc dữ liệu phức tạp. JTable tuân theo mẫu Model View Controller (MVC) để hiển thị dữ liệu theo hàng và cột. JTable tạo ra các giao diện TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener, RowSorterListener. Chúng ta có thể triển khai tìm kiếm trên JTable bằng cách nhập chuỗi vào JTextField, nó tìm chuỗi trong JTable. Nếu khớp, chỉ hiển thị giá trị tương ứng. Chúng ta dùng giao diện DocumentListener của JTextField để triển khai.
Ví dụ
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class JTableSearchTest extends JFrame {
private JTextField jtf;
private JLabel searchLbl;
private TableModel model;
private JTable table;
private TableRowSorter sorter;
private JScrollPane jsp;
public JTableSearchTest() {
setTitle("JTableSearch Test");
jtf = new JTextField(15);
searchLbl = new JLabel("Search");
String[] columnNames = {"Name", "Technology"};
Object[][] rowData = {{"Raja", "Java"}, {"Vineet", "Java Script"}, {"Archana", "Python"},
{"Krishna", "Scala"}, {"Adithya", "AWS"}, {"Jai", ".Net"}};
model = new DefaultTableModel(rowData, columnNames);
sorter = new TableRowSorter<>(model);
table = new JTable(model);
table.setRowSorter(sorter);
setLayout(new FlowLayout(FlowLayout.CENTER));
jsp = new JScrollPane(table);
add(searchLbl);
add(jtf);
add(jsp);
jtf.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
search(jtf.getText());
}
@Override
public void removeUpdate(DocumentEvent e) {
search(jtf.getText());
}
@Override
public void changedUpdate(DocumentEvent e) {
search(jtf.getText());
}
public void search(String str) {
if (str.length() == 0) {
sorter.setRowFilter(null);
} else {
sorter.setRowFilter(RowFilter.regexFilter(str));
}
}
});
setSize(475, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new JTableSearchTest();
}
}
Kết quả

