как заполнить JTextFields столбцами поиска JTable?

У меня есть основная/подробная форма с JTable сверху и всеми соответствующими JTextFields ниже в JPanel. Я пытаюсь выполнить поиск в JTable, чтобы при выборе правильной строки все поля JTextField могли быть заполнены значениями столбца. Я не знаю, как я могу программно вызывать строки для этого. Как это сделать?

Это код, который я использую для поиска:

int rows = (masterTable.getModel()).getRowCount();
final int colCedula = 1; //columna de la CEDULA
final int colRuc = 11; //columna de RUC
String value = null ;
for(int i=0; i
value = (String) (masterTable.getModel()).getValueAt(i, colCedula);
if (value.equals(this.txt_BuscaCliente.getText())) {
    //CODE FOR FILLING JTEXTFIELDS
}

Если поиск находит значение столбца и останавливает цикл, могу ли я просто написать в разделе //CODE masterTable.getSelectedRow(), а затем заполнить все JTextField значениями своего столбца???

Кроме того, как это сделать, чтобы выбранная строка была выделена программно? Скажем, после того, как мой поиск найдет значение столбца, чтобы эта строка была выделена в JTable


person gadget00    schedule 12.09.2010    source источник
comment
Переформатированный код; пожалуйста, верните, если неправильно.   -  person trashgod    schedule 13.09.2010


Ответы (1)


Я бы начал с примера из учебной статьи Как использовать таблицы: выбор пользователя для понимания событий выбора списка. Учитывая модель SINGLE_SELECTION, вам не придется искать; просто заполните текстовые поля из выбранной строки. В качестве альтернативы вы можете сделать ячейки редактируемыми в своей модели таблицы, и вам вообще не придется их копировать.

Приложение:

Кроме того, как это сделать, чтобы выбранная строка была выделена программно?

Вместо поиска пусть ваша реализация ListSelectionListener сообщает вам, какой выбор сделал пользователь. В приведенном примере , измените RowListener, как показано ниже, чтобы выполнить итерацию по столбцам в выбранной строке.

private class RowListener implements ListSelectionListener {

    @Override
    public void valueChanged(ListSelectionEvent event) {
        if (!event.getValueIsAdjusting()) {
            for (int c : table.getSelectedRows()) {
                int row = table.convertRowIndexToModel(c);
                TableModel model = table.getModel();
                for (int col = 0; col < model.getRowCount(); col++) {
                    System.out.println(model.getValueAt(row, col));
                }
                System.out.println();
            }
        }
    }
}
person trashgod    schedule 12.09.2010