так вот в чем проблема. У меня есть окно JDialog, которое состоит из 3 полей со списком, текстовое поле, несколько кнопок и JTable. Информация JTable фильтруется на основе текстового поля и полей со списком, поэтому, например, она начинается со всех данных и сокращается до тех данных, которые начинаются с любого строкового значения, которое решит пользователь.
Что происходит, так это то, что хотя значения фильтруются правильно, если я щелкаю в JTable (в пустом пространстве, где нет строк), то удаляемые строки отображаются, как будто они были невидимы, пока я не нажал на них , Я попробовал почти все:
Я пытался воссоздавать таблицу каждый раз, когда нажимал фильтр (плохой хак, который даже не работал), я вызывал все методы перерисовки, повторной проверки, перезапуска, я переписывал диалог с нуля, чтобы убедиться, что я не сделал этого. не делайте глупых ошибок (если я сделал одну, я не нашел ее по крайней мере), и я попытался поместить их в отдельные темы. Единственное исправление, которое я не пробовал, - это использование работника свинга, но это потому, что моя фильтрация была слишком сложной для меня, чтобы понять, что и куда и как правильно расширить работника свинга. GUI генерируется netbeans (bleh), и работал в моей другой дюжине или около того JDialogs просто отлично (на самом деле идеально). Вот метод, который делает фильтрацию, если кто-то из вас может помочь, он будет очень признателен.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
nameFilter = "task1";
javax.swing.table.DefaultTableModel dm = (javax.swing.table.DefaultTableModel)jTable1.getModel();
tempParameters = parameters;
String currentString;
int rowNumber = 0;
while (dm.getRowCount()>rowNumber){
currentString = (String)(jTable1.getValueAt(rowNumber,1));
if(!nameFilter.equalsIgnoreCase(currentString.substring(0,nameFilter.length()))){
dm.removeRow(rowNumber);
parameters--;
}
else rowNumber++;
}
parameters = numOfRows;
}
Обновление, я также применил фильтр из комментария ниже, и хотя он отфильтровывал правильные данные, у него была точно такая же проблема. В будущем я, вероятно, буду использовать эту функцию фильтра, так что спасибо.
Еще одно обновление, код по-прежнему не работает даже после удаления всего, кроме этого фрагмента, и все (по крайней мере, я верю ..), что я делаю здесь, выполняет простой вызов удаления строки. Надеюсь, это немного поможет.