Можно ли редактировать данные в jtable и сохранять их? - PullRequest
3 голосов
/ 30 апреля 2010

Я хотел бы знать, возможно ли просмотреть мои значения через JTable, а затем отредактировать их там?

Ответы [ 3 ]

4 голосов
/ 30 апреля 2010

isCellEditable (int row, int col) Этот метод определяет, какие строки и столбцы пользователь может изменять. Поскольку этот метод возвращает логическое значение, если все ячейки доступны для редактирования, он просто возвращает значение true. Чтобы запретить JTable редактировать конкретное значение столбца или строки, он возвращает false из этого метода. Следующий код позволяет отображать только первый столбец, а остальные столбцы можно изменять.

// Make column one noneditable

while allowing the user to edit at
all // other columns.
If (col == 1){
return false;
}
else{
return true;
}

public void setValueAt(Object value, int row, int col)

Когда пользователь вносит изменения в редактируемую ячейку, модель таблицы уведомляется с помощью этого метода. Новое значение, а также строка и столбец, в которых оно появилось, передаются в качестве аргументов этому методу. Если исходные данные поступают из базы данных, этот метод становится важным. Как вы увидите, данные, извлеченные из базы данных, хранятся локально в табличной модели, обычно в виде векторов. Когда пользователь изменяет значение ячейки в JTable, соответствующие данные в табличной модели не изменяются автоматически. Вы несете ответственность за добавление кода в это событие, чтобы убедиться, что данные в табличной модели совпадают с данными в JTable. Это становится важным, когда код добавляется для обновления базы данных. Следующий код обновляет данные (содержащиеся в массиве объектов) в табличной модели с новым значением, которое пользователь только что ввел в JTable.

// Update the array of objects with
// the changes the user has just entered in a cell.
// Then notify all listeners (if any) what column
// and row has changed. Further processing may take place there.

rowData[row][col] = value;
fireTableDataChanged();
4 голосов
/ 30 апреля 2010

Конечно, возможно просто TableModel.isCellEditable() return true, и при необходимости установите TableCellEditor.

2 голосов
/ 30 апреля 2010

Да, это возможно. В основном, jtable является редактируемым. Вы можете проверить с помощью метода TableModel.isCellEditable (). После редактирования вы можете сохранить значение таблицы в двумерном массиве и сохранить в базе данных. int i; int j;

    String tableData = new String[row count][column count];

    for(i = 0; i < row count; i++)
    {
        for(j = 0; j < 3; j++)
        {
            tableData[i][j] = table.getValueAt(i, j).toString();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...