当前位置: 首页 > 知识库问答 >
问题:

JTable最后一个值为null

公冶同
2023-03-14

我在创造一个小游戏。所以现在我有了一个只有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());
            }

        });
    }
}

共有1个答案

陆臻
2023-03-14

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

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

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

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

Jtable未返回最后一个单元格值

 类似资料:
  • 这是我的表类 如果((布尔)model.getValueat(r,3)==true){col.setpk(true);} 它给出错误,因为返回类型是布尔型。

  • 我有个问题。。。代码运行正常,但无法获取最后一行和最后一列的最后一个单元格的值。下面是代码。。。请引导 使用此代码,我动态地向JTable添加行:if(e.getSource()==addb){ 下面是从JTable行以及以后而不是系统中获取值的代码。出来println()我将向数据库发送数据。。。

  • 我是新来的希望你们能帮我。。。 我是java编程的初学者,我想我对这个问题有点不知所措。 我的程序运行得很好,除了一个让我恼火的小细节。我有一个JTable,第一列有一个按钮,可以从表中删除这一行。它工作得很好,除了当我试图删除表的最后一行时,按钮停留在那里,然后表冻结,我无法删除任何行,因为我收到了一个“越界异常”。但是,当我使用命令表时。getRowCount()); 在删除该行之前和之后,表

  • 问题内容: 目前,我在声明中正在执行一个非常基本的OrderBy。 问题是“位置”的NULL条目被视为0。因此,所有位置为NULL的条目都出现在具有1,2,3,4的条目之前。例如: 有没有一种方法可以实现以下排序: 问题答案: MySQL具有未记录的语法,可以最后对null进行排序。在列名之前放置减号(-),然后将ASC切换为DESC: 从本质上讲,这与将NULL值最后放置相反,但与相同。 一个很

  • 我有一个titan图,有两组顶点,一个用于用户ID,另一个用于产品。用户ID和产品顶点之间的边缘包含购买产品的“日期”。我正在寻找一个小精灵查询,它可以根据上次购买的产品为我提供用户ID的groupcount 例如,如果有如下数据 我正在寻找如下输出 会感谢任何帮助。

  • 我使用的是Apache Spark,它的数据帧如下所示: 我想按字段分组,以获得的所有历元时间戳。然后我想按时间戳升序对历代进行排序,然后取第一个和最后一个历代。 我使用了下面的查询,但是和历元值似乎是按照它们在原始数据帧中出现的顺序获取的。我想把第一个和最后一个从一个有序的升序中取出来。 如何从按升序历元排序的历元列表中检索第一个和最后一个历元?