如何使用for循环创建表数组?

时间:2013-07-08 22:20:16

标签: java swing

我正在尝试创建一个方法,该方法将从一个类中的数组中获取数据项,然后使用for循环将该信息放入JTable中。这就是我想出来的:

public void createLoginsTable()
{
    String[] loginTableTitles = { "Username", "Password" }; //Creating arrays for my Table
    String[][] loginTableLogins = new String[100][1];

    for(int i=0;list.nextLogin>i;i++)
    {
        loginTableLogins[i][0] = list.listOfLogins[i].username;

        loginTableLogins[i][1] = list.listOfLogins[i].password;
    }

    loginsScrollPane = new JScrollPane(loginsTable = new JTable(loginTableLogins, loginTableTitles));

    loginsScrollPane.setBounds(400, 300, 200, 400);
    testPanel.add(loginsScrollPane);
}

我为表的列标题创建了常规数组,然后我尝试使用这些for循环来放入另一个类中存在的常规数组中的用户名和密码。我对java很新,所以我认为loginTableLogins[i][0]意味着它会将细节放入第一列和'i'行。但这是一个按钮的动作lisener,每次按下按钮,我都会弹出书中的每个错误。一些建议会有所帮助。

2 个答案:

答案 0 :(得分:3)

有几点需要注意:

  • 为了更好,更简洁的论坛帮助,发布您想要帮助的错误
  • 包含初始化代码和列表填充代码。
  • 使用new String[100][1];初始化数组。这与1D数组相同,因为第二维是1(即1列),而是使用new String[100][2];
  • 分隔线

loginsScrollPane = new JScrollPane(loginsTable = new JTable(loginTableLogins, loginTableTitles));

进入

loginsTable = new JTable(loginTableLogins, loginTableTitles)
loginsScrollPane = new JScrollPane(loginsTable);

以便于调试。

答案 1 :(得分:3)

突然出现了一些事情。

  1. 您似乎已经有一个表示要显示的数据的对象。而不是必须在表模型之间前后翻译它,您应该创建一个能够管理/保存原始对象的表模型。

  2. 由于两个原因,
  3. String[][] loginTableLogins = new String[100][1];被宣布为错误。首先,如果你有超过或少于100行,会发生什么?其次,你只声明了一个列,这显然不是你想要的。您已经拥有对象列表中包含的元素数量,因此您应该能够创建一个已包含正确行数的数组

  4. 就个人而言,我会避免使用DefaultTableModel,当你覆盖并实现所需的所有功能时,你就可以完成相同的工作量,就像你开始使用{{1 }}

    例如......

    enter image description here

    AbstractTableModel

    查看How to use tables了解详情