我正在创建一个小游戏。所以现在我有了一个只有5行的JTable。
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());
}
});
}
}
答案 0 :(得分:0)
好的,我找到了解决方案。 问题是,JTable不知道我们是否完成了单元格的编辑。
if (usernameTable.isEditing()) {
usernameTable.getCellEditor().stopCellEditing();
}
这将停止编辑单元格,现在您不再应该获得任何null值。
解决方案:
https://tips4java.wordpress.com/2008/12/12/table-stop-editing/