Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để triển khai chức năng tìm kiếm của JTable trong Java?

A JTable là một lớp con của JComponent để hiển thị các cấu trúc dữ liệu phức tạp. Thành phần JTable có thể tuân theo mẫu thiết kế Model View Controller (MVC) để hiển thị dữ liệu trong hàng và cột . JTable có thể tạo TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener, RowSorterListener các giao diện. Chúng tôi có thể triển khai chức năng tìm kiếm của JTable bằng cách nhập một chuỗi vào JTextField , nó có thể tìm kiếm một chuỗi có sẵn trong JTable. Nếu chuỗi khớp với nó, nó chỉ có thể hiển thị giá trị tương ứng trong một JTable. Chúng tôi có thể sử dụng DocumentListener giao diện của JTextField để triển khai nó.

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();
   }
}

Đầu ra

Làm cách nào để triển khai chức năng tìm kiếm của JTable trong Java?


Làm cách nào để triển khai chức năng tìm kiếm của JTable trong Java?