Java JTable筛选器数据
我无法将筛选器正确应用于JTableJava JTable筛选器数据,java,swing,jtable,keylistener,rowfilter,Java,Swing,Jtable,Keylistener,Rowfilter,我无法将筛选器正确应用于JTable private static TableRowSorter<SQLiteTableModel> sorter = null; ... private void jTFSearchOtherKeyPressed(java.awt.event.KeyEvent evt) { jTableOther.setRowSorter(sorter); Stri
private static TableRowSorter<SQLiteTableModel> sorter = null;
...
private void jTFSearchOtherKeyPressed(java.awt.event.KeyEvent evt) {
jTableOther.setRowSorter(sorter);
String text3 = jTFSearchOther.getText();
if (text3.length() == 0) {
sorter.setRowFilter(null);
} else {
sorter.setRowFilter(RowFilter.regexFilter(text3));
}
}
在线137
@Override
public Object getValueAt(int row, int column) {
return contents[row][column];
}
内容数组可能有其他引用,而不是应用筛选器时模型所要求的引用, 所以试试这个
public Object getValueAt(int row, int column) {
if(contents.length>row && contents[row].length>column)
return contents[row][column];
return null;//must solve this issue when object not found
}
这里进行过滤
private void updateTableManager() throws SQLException {
SQLiteTableModel modelManager;
modelManager = new SQLiteTableModel(connectDB, "VIEW_MANAGER");
jTableManager.setModel(modelManager);
sorter = new TableRowSorter<>(modelManager);
sorter.setComparator(2, new SQLiteComparator());
jTableManager.setRowSorter(sorter);
}
private void updateTableManager()引发SQLException{
sqlitetablemodelmodelmanager;
modelManager=新的SQLiteTableModel(connectDB,“视图管理器”);
jTableManager.setModel(modelManager);
分拣机=新表格行分拣机(modelManager);
setComparator(2,新的SQLiteComparator());
jTableManager.setRowSorter(分拣机);
}
这里没有
private void updateTableWorker() throws SQLException {
SQLiteTableModel modelWorker;
modelWorker = new SQLiteTableModel(connectDB, "VIEW_MANAGER_WORKER");
jTableManagerWorker.setModel(modelWorker);
sorter = new TableRowSorter<>(modelWorker);
sorter.setComparator(2, new SQLiteComparator());
jTableManagerWorker.setRowSorter(sorter);
}
private void updateTableWorker()引发SQLException{
SQLiteTableModelWorker;
modelWorker=新的SQLiteTableModel(connectDB,“视图\管理者\工作者”);
jTableManagerWorker.setModel(modelWorker);
分拣机=新的表格行分拣机(modelWorker);
setComparator(2,新的SQLiteComparator());
jTableManagerWorker.setRowSorter(分拣机);
}
很抱歉,没有足够的信息来帮助解决此问题。考虑发布一个。也不要使用KeyListener。改用DocumentListener。您的异常是由SQLiteTableModel中的错误引起的。这是您应该发布的代码。请下载该应用程序,它不是一个病毒。请通过发布相关代码来明确您的问题。我们不会下载任何东西。当您从驱动器中删除文件时,您的问题将不再有意义。错误答案(已接受的答案无法删除)不是关于将DocumentListener添加到JTextField,有关阅读Oracle官方教程如何使用表、部件排序和筛选的更多信息,特别是对于SSCCE/MCVE表单中的工作代码示例,在访问它之前检查是否存在数组索引有什么错,第一次我没有回答,我说了“may”,这是为了避免索引越界异常
private void updateTableWorker() throws SQLException {
SQLiteTableModel modelWorker;
modelWorker = new SQLiteTableModel(connectDB, "VIEW_MANAGER_WORKER");
jTableManagerWorker.setModel(modelWorker);
sorter = new TableRowSorter<>(modelWorker);
sorter.setComparator(2, new SQLiteComparator());
jTableManagerWorker.setRowSorter(sorter);
}