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

addrow()在JTable中不显示任何内容,但行对象有值

马银龙
2023-03-14

我使用swing中的JTable来显示一个MySQL表,尽管表值出现在行对象中(如屏幕截图中的输出),但应用程序中的JTable是空的。截图中的输出是Object[]数组,但是当我在addRow方法中传递它时,它在JTable GUI上不会显示任何内容。

private void tableSubmitButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                  

    //fetch the name of the database to be created
    String dbName = tableDBName.getText();
    //fetch the root password 
    String password = new String(tableDBPass.getPassword());
    // fetch table name
    String tableName = tableTableName.getText();        

    DefaultTableModel tableModel = (DefaultTableModel)tableViewTable.getModel();
    int rowCount = tableModel.getRowCount();
    for(int i = 0; i<rowCount; i++){
        tableModel.removeRow(0);
    }

    try{
        // create connection
        CreateConnection newCon = new CreateConnection();
        Statement newStat = newCon.initiate(dbName, password);

        // result set contains the data fetched from the MySQL table
        ResultSet rs = newStat.executeQuery("select * from "+tableName);

        // get column names and column count
        ResultSetMetaData metaData = rs.getMetaData();
        int n_columns = metaData.getColumnCount();

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


        for(int i = 1; i<=n_columns; i++){
            columnNames.add(metaData.getColumnName(i));
        }


        while(rs.next()){
            ArrayList row = new ArrayList(n_columns);

            for(int i = 1; i<=n_columns; i++){
                row.add(rs.getObject(i));
            }
            Object[] obj = row.toArray();
            tableModel.addRow(obj);
            System.out.println("table updated..: "+Arrays.toString(obj));
        }
    }catch(SQLException e){
        System.out.println(e.getMessage());
    }

}

除此之外,我删除了在表单中插入JTable时最初出现的所有行。

共有1个答案

闻人吕恭
2023-03-14
DefaultTableModel tableModel = (DefaultTableModel)tableViewTable.getModel();

所以您从一个空的TableModel开始,这意味着模型没有列或行。

因此,即使您调用了addRow()方法,您的模型也没有列,因此JTable中没有任何可显示的内容

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

for(int i = 1; i<=n_columns; i++){
     columnNames.add(metaData.getColumnName(i));
 }

上面的代码什么也不做。它所做的只是向ArrayList添加一些数据,但从未使用该ArrayList。

    null
    null
  1. 使用TableModelView.setModel(...)替换表中的模型。

现在,您的表模型将同时具有数据的列和行。

 类似资料:
  • 我正在使用工具,我得到了一个可编辑的PDF,我在文档中看到参数应该向我显示表单的字段。 我使用以下命令(windows): 文档:https://www.pdflabs.com/docs/pdftk-man-page/ 关键是PDF是可编辑的,它有可以用Adobe PDF Viewer编写的字段。

  • 我已经安装了appium版本1.4.13(Draco)。 在appium iOS配置中提供了以下详细信息 A.app path/Users/mac/Documents/testing/automationTesting.app b。强制装置iphone6、3。平台版本8.2.4。未选中UDID和bundle ID。该.app是使用Xcode 7.0.1版生成的 在启动appium并获得响应代码20

  • 就像渲染器和编辑器听起来一样简单,尽管有十几个这样的书签,我还是回到类似的问题上,我缺少了一些基本的东西。我想把任何旧的文本文件拖到一个2列的JTable中,让第一列显示文件名,第二列包含一个JComboBox,它的选项取决于拖动文件的内容。(在下面的代码中,我只是伪造了几个条目。) 这一切都正常工作,直到我从一个组合框中做出一个选择--该选择不显示--只是一个组合框,正确填充但没有做出选择。我知

  • 人类同胞们! 我最近安装了pyGames,遵循Bryson Payne制作的令人敬畏的指南,您可以在此处找到。我按照说明中的顺序安装了以下所有依赖项和程序。 < li >已安装的XQuartz < li >已经安装了Homebrew(这是第二步)。 < li >安装了一个来自homebrew的python 3版本,专门用于py game < li >对终端执行了以下命令:brew install

  • 我对处理是完全陌生的,我想通过创建一个简单的绘制矩形的草图来测试它,然而,当我运行草图时,会弹出一个没有任何内容的窗口。我试着把它填满,在上面画一个提纲,还有其他各种事情,但什么都没发生。我认为这不是代码的问题,而是应用程序本身的问题,我不知道如何修复它。我正在windows上使用processing 3.5.4。 代码: 预期输出:屏幕上显示一个正方形。 输出:没有显示

  • 问题内容: 我有一个在我的dockerfile中启动的Python(2.7)应用程序: main.py 在启动时会打印一些字符串,然后进入循环: 只要我使用-it标志启动容器,一切都会按预期进行: 我稍后可以通过日志看到相同的输出: 如果我尝试使用-d标志运行相同的容器,则该容器似乎正常启动,但看不到任何输出: 但是容器似乎仍在运行; 附件也不显示任何内容: 任何想法出什么事了吗?在后台运行时,“