Java JTable动态填充

标签 java swing user-interface jtable

这是我第一次尝试使用 Java Swing JTable,所以我可能做了一些愚蠢的事情。

我正在尝试动态更新 GUI 上 JFrame 内的 JTable,这是我当前编写的代码:

 private void updateGUI(String input, DefaultTableModel model, int elements)  { //3 elements
    try {
        Object[] cellData = input.split("!\\*");
        Iterator it = Arrays.asList(cellData).iterator();
        int rowCount = cellData.length / numberOfElements;

        model.setRowCount(rowCount);

        for (int i = 0; i < rowCount; i++) {
            for (int j = 0; j < numberOfElements; j++) {
                model.setValueAt(it.next(), i, j);
            }

        }
    } catch (Exception uhoh) {
        System.out.println("Couldn't add new string to gui");
        uhoh.printStackTrace();
    }

}

本质上,我向 updateGUI 函数传递一个包含元素的字符串,元素之间用 !* 分隔。目前数据如下:

firstName!*123456!*lastName

然后将其拆分为 Object[],我当前正在使用迭代器将其放入表格单元格中。

但是,我不断抛出 ArrayIndexOutOfBoundsException: 27 >=27 ,所以看来我在单元格生成/填充方面做错了什么。

我确信有更好的方法可以做到这一点,但在阅读了一些示例后,我仍然有点困惑。

如有任何建议或建议,我们将不胜感激。

谢谢!

最佳答案

我发现执行此操作的最简单方法是编写自定义TableModel。我已经写了很多,当你认真思考它们时,它们并不那么困难。根据您发布的代码,您已收到此消息。

AbstractTableModel 派生您的 TableModel 类。这将处理任何模型监听器的注册(其中之一将是您的 JTable)。然后在插入时,您需要调用 fireXXX() 来通知所有监听器有新数据。从您要替换所有数据的示例代码来看,这将是 fireTableDataChanged()

关于Java JTable动态填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17191225/

相关文章:

c# - 如何继承基本文本框以提供彩色边框

html - 在图片背景上显示文字

java - Android Studio list URI 未注册

java - 支持 Netbeans 和 Eclipse 用户的 Git 存储库的最佳实践

java - 拖放 JLabel 的动画

java - 摆脱 JMenu 中浪费/未使用的空间

java - 有没有办法使用 Substance 从 JMenuBar 中删除此搜索图标和栏?

java - 使用 JSP 页面映射列表并在 Action 类中获取值。它将结果列表作为 Action 类中的笛卡尔积

java - 使用 java 流查找第一个免费的 "index"

java - ActiveAndroid 设置