Java 过滤JTable
我正在做一个计算项目,需要我创建一个JTable,人们可以通过它进行过滤。我已成功添加排序函数,但无法添加筛选函数。我能找到的最接近的例子,与我想要的类似,是TableFilterDemo项目,它能够在 我正在尝试将筛选代码的功能添加到这段代码中Java 过滤JTable,java,swing,jtable,tablerowsorter,rowsorter,Java,Swing,Jtable,Tablerowsorter,Rowsorter,我正在做一个计算项目,需要我创建一个JTable,人们可以通过它进行过滤。我已成功添加排序函数,但无法添加筛选函数。我能找到的最接近的例子,与我想要的类似,是TableFilterDemo项目,它能够在 我正在尝试将筛选代码的功能添加到这段代码中 import javax.swing.*; import java.awt.*; import java.io.*; import java.lang.*; ////////////////// import javax.swing.RowFilter
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.lang.*;
//////////////////
import javax.swing.RowFilter;
import javax.swing.event.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.Dimension;
import java.awt.Component;
//////////////////
public class CompFrame
{
JFrame myMainWindow = new JFrame("This is my title");
JPanel firstPanel = new JPanel(); //a panel for first tab
//first panel components
JScrollPane myScrollTable;
public void runGUI()
{
myMainWindow.setBounds(10, 10, 1296, 756); //set position, then dimensions
myMainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myMainWindow.setLayout(new GridLayout(1,1));
createFirstPanel(); //call method to create each panel
myMainWindow.getContentPane().add(firstPanel); //adds the tabbedpane to mainWindow
myMainWindow.setVisible(true); //make the GUI appear
}
public void createFirstPanel()
{
firstPanel.setLayout(null);
String[] aHeaders = {"Athlete ID","Forename","Surname"};
String[][] sampleData = new String[3][3]; //rows,cols
sampleData[0][0] = "JS98";
sampleData[0][1] = "John";
sampleData[0][2] = "Smith";
sampleData[1][0] = "DB56";
sampleData[1][1] = "David";
sampleData[1][2] = "Bower";
sampleData[2][0] = "LL86";
sampleData[2][1] = "Lex";
sampleData[2][2] = "Luthor";
JTable myTable = new JTable(sampleData,aHeaders);
myTable.setAutoCreateRowSorter(true); //Sorts by a-z or 0-9 in the columns when a header is clicked
myScrollTable = new JScrollPane(myTable);
myScrollTable.setSize(1282,600);
myScrollTable.setLocation(0,120);
System.out.println("Creating compare table");
firstPanel.add(myScrollTable);
}
public static void main(String[] args)
{
CompFrame cf = new CompFrame();
cf.runGUI();
}
}
我将感谢任何帮助。谢谢无论如何它都不是完美的,但是如果您有一个可以应用操作事件的文本字段,您可以使用表分类器。这不是最干净的,但应该能用
public void searchTable(String input) {
final TableRowSorter<TableModel> sorter = new TableRowSorter<>(yourTable.getModel());
allEventsTable.setRowSorter(sorter);
if (input.length() != 0) {
sorter.setRowFilter(RowFilter.regexFilter("(?i)" + input));
} else {
sorter.setRowFilter(null);
}
}
public void searchTable(字符串输入){
final TableRowSorter sorter=新的TableRowSorter(yourTable.getModel());
AllEventTable.SetRow分拣机(分拣机);
如果(input.length()!=0){
sorter.setRowFilter(RowFilter.regexFilter(“(?i)”+输入));
}否则{
分拣机设置行过滤器(空);
}
}
“我正在尝试添加过滤功能…”在该代码中,您尝试在哪里建立一个表格行排序器
?所以不是一个“请完成我的任务”网站。你的具体问题是什么?我的尝试已被删除,因为它完全打乱了我的程序。我的具体问题是如何正确而简单地添加过滤器?1)firstPanel.setLayout(null)代码>Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 可能重复的(好像OP链接到的源代码不是…)“我的具体问题是如何正确添加筛选器…”请遵循教程,如果这对您来说不够简单。。“。简单地说?”…承认你不是天生的编程能手,然后付钱给某人。我们将研究一个相关的例子。