我正在创建一个小游戏。所以现在我有一个只有 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/
关于java - JTable 最后一个值 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56970909/