java - JTable 最后一个值 null

标签 java swing jtable

我正在创建一个小游戏。所以现在我有一个只有 5 行的 JTable。

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

单击按钮后,我想保存表中的值。我的问题是最后一个值每次都是 null

示例

Val from Table : user1, user2, user3, user4, user5
Expected output: [user1, user2, user3, user4, user5]
Output: [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());
            }

        });
    }
}

最佳答案

好的,我找到了解决方案。 问题是,JTable 不知道我们是否完成了单元格的编辑。

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

这将停止编辑单元格,现在您不应再获得任何空值。

解决方案:
https://tips4java.wordpress.com/2008/12/12/table-stop-editing/

Jtable not returning the last cell value

关于java - JTable 最后一个值 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56970909/

相关文章:

java - 文件到 JTable、JTable 到文件

javascript - 在 Jtable && razor 应用程序中设置页面大小

java - 基于复选框 JTable 使特定单元格可编辑

java - 是否可以将 Android JUnit 测试套件压缩到 JAR 文件中?

java - 如何检查 JCheckBox 是否被选中?

c# - C# BinaryReader 中的 Java DataInputStream 方法

swing - 如何在 JPanel、Java Swing 的中心添加 JToolBar?

java - TicTacToe 帮助 重画功能

java - 如何在基于类的注释中声明 Spring 中的 Transaction bean?

java - 我如何一次获取两个 jTextField 的文本?