Удаление текстового поля, созданного с помощью SpringLayout
Я использую код из примера на официальной странице Oracle. Один для сортировки и фильтрации данных таблицы. В исходном варианте у него есть два поля - одно для ввода критерия фильтрации, а второе для отображения, какая строка из сетки выбрана. Мне не нужен второй, хочу оставить только поле фильтра, но мне кажется, что я что-то упустил. Ниже мой код с комментариями к коду, который я счел ненужным:
public TableFilterDemo() {
super();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
//Create a table with a sorter.
MyTableModel model = new MyTableModel("customers.dat");
sorter = new TableRowSorter<MyTableModel>(model);
table = new JTable(model);
table.setRowSorter(sorter);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
//For the purposes of this example, better to have a single
//selection.
// table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//When selection changes, provide user with row numbers for
//both view and model.
/* table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
int viewRow = table.getSelectedRow();
if (viewRow < 0) {
//Selection got filtered away.
statusText.setText("");
} else {
int modelRow =
table.convertRowIndexToModel(viewRow);
statusText.setText(
String.format("Selected Row in view: %d. " +
"Selected Row in model: %d.",
viewRow, modelRow));
}
}
}
);
*/
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
//Add the scroll pane to this panel.
add(scrollPane);
//Create a separate form for filterText and statusText
JPanel form = new JPanel(new SpringLayout());
JLabel l1 = new JLabel("Student Number:", SwingConstants.TRAILING);
form.add(l1);
filterText = new JTextField();
//Whenever filterText changes, invoke newFilter.
filterText.getDocument().addDocumentListener(
new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
newFilter();
}
public void insertUpdate(DocumentEvent e) {
newFilter();
}
public void removeUpdate(DocumentEvent e) {
newFilter();
}
});
l1.setLabelFor(filterText);
form.add(filterText);
/* JLabel l2 = new JLabel("Status:", SwingConstants.TRAILING);
form.add(l2);
statusText = new JTextField();
l2.setLabelFor(statusText);
form.add(statusText); */
SpringUtilities.makeCompactGrid(form, 2, 2, 6, 6, 6, 6);
add(form);
}
Я получаю много ошибок, когда пытаюсь скомпилировать, но первое:
Исключение в потоке "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Нет такого потомка: 2
1 ответ
Комментируемый блок не нужен, но вместе с ним передается второй параметр SpringUtilities.makeCompactGrid(form, 1, 2, 6, 6, 6, 6);
должно быть изменено с 2
как в моем первоначальном вопросе 1
как будто это здесь.