Mic*_*ler 2 java swing filtering jtable
我有一个JTable(DefaultTableModel)和一个JTextField.我想用我放入文本字段的正则表达式过滤JTable.当我启动程序时,会显示所有条目,但是当我在文本字段中输入文本时,即使它应该在一行中找到文本,也不会显示任何行.
private void createFilter() {
_sorter = new TableRowSorter<DefaultTableModel>(new DefaultTableModel());
JPanel filterPanel = new JPanel();
filterPanel.setLayout(new BorderLayout());
JLabel filterLabel = new JLabel("Filter:");
filterPanel.add(filterLabel, BorderLayout.WEST);
_inputField = new JTextField();
_inputField.setColumns(40);
filterPanel.add(_inputField, BorderLayout.CENTER);
_inputField.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent de) {
newFilter();
}
public void removeUpdate(DocumentEvent de) {
newFilter();
}
public void changedUpdate(DocumentEvent de) {
newFilter();
}
});
JButton clearButton = new JButton("X");
clearButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
_inputField.setText("");
}
});
filterPanel.add(clearButton, BorderLayout.EAST);
_mainFrame.add(filterPanel, BorderLayout.SOUTH);
}
private void newFilter() {
RowFilter<DefaultTableModel, Object> rowFilter = null;
try {
rowFilter = RowFilter.regexFilter(_inputField.getText());
}
catch(java.util.regex.PatternSyntaxException ex) {
return;
}
_sorter.setRowFilter(rowFilter);
_table.setRowSorter(_sorter);
}
Run Code Online (Sandbox Code Playgroud)
我的调试器告诉我,rowFilter已初始化,因此不能因为RegEx错误.每次按键时都会调用newFilter().
提前致谢.如果需要,我很乐意提供更多信息.
真诚的,迈克尔
归档时间: |
|
查看次数: |
2732 次 |
最近记录: |