Как заполнить JTextFields столбцами поиска JTable? - PullRequest
2 голосов
/ 13 сентября 2010

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

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

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 () и затем заполните все поля JTextFields значениями его столбца ???

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

1 Ответ

2 голосов
/ 13 сентября 2010

Я бы начал с примера из учебной статьи Как использовать таблицы: выбор пользователя , чтобы понять события выбора списка.Учитывая 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();
            }
        }
    }
}
...