JTable последнее значение null - PullRequest
0 голосов
/ 10 июля 2019

Я создаю небольшую игру.Так что теперь у меня есть JTable только с 5 строками.

DefaultTableModel dtm = (DefaultTableModel) usernameTable.getModel();
dtm.setColumnCount(1);
dtm.setRowCount(5);

После того, как я нажму кнопку, я хочу сохранить значения из таблицы.Моя проблема в том, что последнее значение каждый раз null .

Пример

Val из таблицы: user1, user2, user3,user4, user5
Ожидаемый вывод: [user1, user2, user3, user4, user5]
Выход: [user1, user2, user3, user4, null]

Этокак я получаю данные из таблицы

ArrayList<String> username = new ArrayList<String>();

for (int i = 0; i < usernameTable.getRowCount(); i++) {
    username.add(usernamTable.getValueAt(i, 0);
}

Пример запуска

public class JtableNullExample {
    private JTable usernameTable;
    private JPanel usernamePane;
    private JButton sendButton;
    private ArrayList<String> userList = new ArrayList<>();


    public static void main(String[] args) {
        new JtableNullExample();
    }

    public JtableNullExample() {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //Setting Table Model
        DefaultTableModel dtm = (DefaultTableModel) usernameTable.getModel();
        dtm.setColumnCount(1);
        dtm.setRowCount(5);

        frame.setContentPane(usernamePane);
        frame.setVisible(true);

        sendButton.addActionListener(e -> {

            for (int count = 0; count < usernameTable.getRowCount(); count++) {

                System.out.println(usernameTable.getValueAt(count, 0));
                userList.add(usernameTable.getValueAt(count, 0).toString());
            }

        });
    }
}

1 Ответ

0 голосов
/ 10 июля 2019

Хорошо, я нашел решение. Проблема в том, что JTable не знает, закончили ли мы редактирование ячейки.

if (usernameTable.isEditing()) {
   usernameTable.getCellEditor().stopCellEditing();
}

Это прекратит редактирование ячейки, и теперь вы больше не должны получать нулевое значение.

Решение:
https://tips4java.wordpress.com/2008/12/12/table-stop-editing/

Jtable не возвращает последнее значение ячейки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...