2011-12-19 53 views
0

我需要一些帮助理解不被填充的ArrayList为什么,JTable中的TextArea在java中

我想传递一个的JTable,在JFrame到一个JTextArea taht存储的信息是另一个JFrame的,我curently有下面的代码,但由于某些原因,信息不被通过,它保持空

我不希望任何人做我的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的点击,我有

 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)); 
    } 


}           

我会apriciate任何帮助,您可以给。

THX提前.....

修复....

THX的帮助固定它像这样,

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))); 
    } 

而且它的工作是这样

+1

遵守命名约定是一种好习惯。在Java中,惯例是只有类名有第一个大写字母。因此,你的'TableInformation'应该被称为'tableInformation'。遵循这些约定会增加代码的可读性 - 例如,乍一看,TableInformation.get(i)看起来像是一个静态的调用。 – 2011-12-19 11:42:10

回答

1

尝试调试您的代码。它可能有助于添加打印语句以检查由extractTableInfo方法返回的ArrayList是否包含表格的内容。

此外,下面的循环可以改进:

for (int i = 0; i < gt.extractTableInfo().size(); i++) { 
    TableInformation.add(gt.extractTableInfo().get(i)); 
} 

看起来每当调用extractTableInfo要创建一个新的ArrayList和一遍遍从表中填充它等。

而是使用:

ArrayList<String> extractedInfo = gt.extractTableInfo(); 
for (int i = 0; i < extractedInfo.size(); i++) { 
    TableInformation.add(extractedInfo.get(i)); 
} 

甚至更​​好,用途:

TableInformation.addAll(gt.extractTableInfo()); 
+0

甚至更​​好:不要将所有元素从一个列表复制到另一个列表:完全没有必要。直接使用由gt.extractTableInfo()返回的列表 – 2011-12-19 11:27:18

+0

我做了一点测试,并尝试将extractTableInfo()放入同一个jFrame中,并且返回结果不为空数据显示出来,我认为问题是当我将数据从一个JFrame传递到另一个, ArrayList extractedInfo = gt.extractTableInfo();对于(int i = 0; i 2011-12-19 11:35:42

0

如果我理解这一点正确的,你的问题是,extractTableInfo()总是返回一个空的ArrayList。

既然你行

extractedInfo.add(rowInfo); 

在你的代码,extractedInfo不应如果执行过该行是空的。即使rowInfonull,它永远不会,它会被添加到列表中。考虑到这一点,你是当然nRow(和nCol)是否大于零?这是我可以看到会阻止提到的行被执行的唯一原因。

+0

我做测试的痘痘位和tryed到extractTableInfo()diplay到相同的JFrame和回报不为空得到的数据显示,我认为问题是当我从一个JFrame传递数据到另一个, – 2011-12-19 11:32:14

+0

尝试调试'jButton3ActionPerformed'并检查'TableInformation'是否为空或只包含空字符串。 – 2011-12-19 11:37:38

+0

TableInformation是空的,我打算做一个重载的构造函数并从那里传递数组列表,是否有可能将一个重载的构造函数作为数据类型ArrayList ? – 2011-12-19 11:42:38