java jtable 行,Java JTable-仅显示与字符串匹配的行

小编典典

您要DocumentListener与行过滤器一起使用。您可以看到如何编写DocumentListener。

基本上,侦听器侦听文本字段的基础文档中的更改。从您在中重写的方法中DocumentListener,您可以像当前所做的那样获取文本,并像您当前所做的那样设置regex

ex过滤器

这是一个简单的示例(忽略applet。我只是从这篇文章中获得了样板代码,并添加了文档侦听器)。注意:同一篇文章提供了答案,如果您正在寻找该功能,则可以使用不区分大小写的方式进行过滤

import javax.swing.JApplet;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.RowFilter;

import javax.swing.event.DocumentEvent;

import javax.swing.event.DocumentListener;

import javax.swing.table.TableModel;

import javax.swing.table.TableRowSorter;

public class TestTableSorterFilter extends JApplet {

private String[] columnNames

= {"Country", "Capital", "Population in Millions", "Democracy"};

private Object[][] data = {

{"USA", "Washington DC", 280, true},

{"Canada", "Ottawa", 32, true},

{"United Kingdom", "London", 60, true},

{"Germany", "Berlin", 83, true},

{"France", "Paris", 60, true},

{"Norway", "Oslo", 4.5, true},

{"India", "New Delhi", 1046, true}

};

private JTable jTable = new JTable(data, columnNames);

private TableRowSorter rowSorter

= new TableRowSorter<>(jTable.getModel());

private JTextField jtfFilter = new JTextField();

private JButton jbtFilter = new JButton("Filter");

public TestTableSorterFilter() {

jTable.setRowSorter(rowSorter);

JPanel panel = new JPanel(new BorderLayout());

panel.add(new JLabel("Specify a word to match:"),

BorderLayout.WEST);

panel.add(jtfFilter, BorderLayout.CENTER);

add(panel, BorderLayout.SOUTH);

add(new JScrollPane(jTable), BorderLayout.CENTER);

jtfFilter.getDocument().addDocumentListener(new DocumentListener(){

@Override

public void changedUpdate(DocumentEvent arg0) {}

@Override

public void insertUpdate(DocumentEvent arg0) {

String text = jtfFilter.getText();

if (text.trim().length() == 0) {

rowSorter.setRowFilter(null);

} else {

rowSorter.setRowFilter(RowFilter.regexFilter(text));

}

}

@Override

public void removeUpdate(DocumentEvent arg0) {

String text = jtfFilter.getText();

if (text.trim().length() == 0) {

rowSorter.setRowFilter(null);

} else {

rowSorter.setRowFilter(RowFilter.regexFilter(text));

}

}

});

}

}

2020-11-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值