我需要一些帮助来理解为什么数组列表没有被填充,
我试图传递信息存储在一个JFrame上的jTable到另一个JFrame上的JTextArea,我目前有以下代码,但由于某种原因信息没有被传递,它保持空
我不需要任何人为我做我的HW,我只需要在正确的方向,
这是我到目前为止所做的代码。
public ArrayList<String> extractTableInfo() {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int nRow = model.getRowCount(), nCol = model.getColumnCount();
ArrayList<String> extractedInfo = new ArrayList<String>();
String rowInfo = "";
for (int i = 0; i < nRow; i++) {
for (int j = 0; j < nCol; j++) {
rowInfo = rowInfo + (String) model.getValueAt(i, j);
}
extractedInfo.add(rowInfo);
}
return extractedInfo;
}
在第一个JFrame和第二个JFrame on按钮中点击我有
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
Generate_Teams gt = new Generate_Teams();
ArrayList<String> TableInformation = new ArrayList<String>();
for(int i =0; i < gt.extractTableInfo().size(); i++){
TableInformation.add(gt.extractTableInfo().get(i));
}
for (int i = 0; i < TableInformation.size(); i++) {
jTextArea1.append(TableInformation.get(i));
}
}
我很感激你能给予的任何帮助。
提前谢谢.....
修复……
谢谢你的帮助,把它修好了,
Edit ed = new Edit(extractTableInfo());
ed.setVisible(true);
在第一帧中在第二帧中我做了这个
private ArrayList<String> infogot = new ArrayList<String>();
public Edit(ArrayList<String> getinfo)
{
initComponents();
this.infogot = getinfo;
}
for (int i = 0; i < infogot.size(); i++) {
jTextArea1.append(String.valueOf(infogot.get(i)));
}
是这样的
试着调试你的代码。添加print语句来检查extractTableInfo
方法返回的ArrayList是否包含表的内容可能会有所帮助。
同样,下面的循环也可以改进:
for (int i = 0; i < gt.extractTableInfo().size(); i++) {
TableInformation.add(gt.extractTableInfo().get(i));
}
这看起来就像每当你调用extractTableInfo时,你都在创建一个新的数组列表,并一次又一次地从表中填充它。
而不是使用:
ArrayList<String> extractedInfo = gt.extractTableInfo();
for (int i = 0; i < extractedInfo.size(); i++) {
TableInformation.add(extractedInfo.get(i));
}
或者更好,使用:
TableInformation.addAll(gt.extractTableInfo());
如果我理解正确,你的问题是extractTableInfo()
总是返回一个空的ArrayList。
因为你有
行extractedInfo.add(rowInfo);
在你的代码中,extractedInfo
不应该是空的,如果那一行被执行。即使rowInfo
是null
,它也不会被添加到列表中。考虑到这一点,您是否确定 nRow
(和nCol
)大于零?这是我能看到的唯一能阻止上述行执行的原因。