Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราจะกรอง JTable ใน Java ได้อย่างไร


A JTable ให้ความเป็นไปได้ที่ยืดหยุ่นมากในการสร้างและแสดงตาราง Table Model อินเทอร์เฟซกำหนดวิธีการสำหรับวัตถุที่ระบุเนื้อหาของตาราง AbstractTableModel โดยทั่วไปคลาสจะถูกขยายเพื่อให้มีการใช้งานตารางโมเดลแบบกำหนดเอง คลาส JTable ให้ความสามารถในการแก้ไขตารางโดยใช้เมธอด setCellEditor() อนุญาตให้วัตถุของ TableCellEditor อินเทอร์เฟซ

เราสามารถ กรอง ตารางโดยใช้ setRowFilter() วิธีการของ TableRowSorter คลาส

ตัวอย่าง

import java.awt.*;
import java.awt.event.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.table.*;
public class FilterTableTest extends JFrame {
   private JTable table;
   private TableModel model;
   public FilterTableTest() {
      setTitle("FilterTable Test");
      Object rows[][] = {{"Adithya", "Content Developer", 25000}, {"Jai", "SME", 30000},  {"Chaitanya", "Java Engineer", 45000}, {"Ramesh", "Scala Developer", 40000}, {"Ravi", "SAP  Consultant", 70000}};
      Object columns[] = {"Name", "Designation", "Salary"};
      model = new DefaultTableModel(rows, columns) {
         public Class getColumnClass(int column) {
            Class returnValue;
            if((column >= 0) && (column < getColumnCount())) {
               returnValue = getValueAt(0, column).getClass();
            } else {
               returnValue = Object.class;
            }
            return returnValue;
         }
      };
      table = new JTable(model);
      final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
      table.setRowSorter(sorter);
      add(new JScrollPane(table), BorderLayout.CENTER);
      JPanel panel = new JPanel(new BorderLayout());
      JLabel label = new JLabel("Filter");
      panel.add(label, BorderLayout.WEST);
      final JTextField filterText = new JTextField("");
      panel.add(filterText, BorderLayout.CENTER);
      add(panel, BorderLayout.NORTH);
      JButton button = new JButton("Filter");
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            String text = filterText.getText();
            if(text.length() == 0) {
               sorter.setRowFilter(null);
            } else {
               try {
                  sorter.setRowFilter(RowFilter.regexFilter(text));
               } catch(PatternSyntaxException pse) {
                     System.out.println("Bad regex pattern");
               }
             }
         }
      });
      add(button, BorderLayout.SOUTH);
      setSize(400, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String args[]) {
      new FilterTableTest();
   }
}

ผลลัพธ์

เราจะกรอง JTable ใน Java ได้อย่างไร


เราจะกรอง JTable ใน Java ได้อย่างไร