我正在尝试创建一个方法,该方法将从一个类中的数组中获取数据项,然后使用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,每次按下按钮,我都会弹出书中的每个错误。一些建议会有所帮助。
答案 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)
突然出现了一些事情。
您似乎已经有一个表示要显示的数据的对象。而不是必须在表模型之间前后翻译它,您应该创建一个能够管理/保存原始对象的表模型。
String[][] loginTableLogins = new String[100][1];
被宣布为错误。首先,如果你有超过或少于100行,会发生什么?其次,你只声明了一个列,这显然不是你想要的。您已经拥有对象列表中包含的元素数量,因此您应该能够创建一个已包含正确行数的数组
就个人而言,我会避免使用DefaultTableModel
,当你覆盖并实现所需的所有功能时,你就可以完成相同的工作量,就像你开始使用{{1 }}
例如......
AbstractTableModel
查看How to use tables了解详情