Jtable для TextArea в Java - PullRequest
       12

Jtable для TextArea в Java

0 голосов
/ 19 декабря 2011

Мне нужна помощь в понимании того, почему ArrayList не заполняется,

Я пытаюсь передать информацию, хранящуюся в jTable, которая находится в JFrame, в JTextArea, что находится в другом JFrame, у меня есть следующий код, но по какой-то причине информация не передается, она остается пустой

Я не хочу, чтобы кто-нибудь делал мои 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));
    }


}                                        

Я хотел бы отрицать любую помощь, которую вы можете оказать.

Спасибо заранее .....

Fix ....

Спасибо за вашу помощь, исправил это так,

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

И это сработало так

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Попробуйте отладить ваш код.Это может помочь при добавлении операторов печати, чтобы проверить, содержит ли ArrayList, возвращаемый методом extractTableInfo, содержимое таблицы.

Также можно улучшить приведенный ниже цикл:

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

ItПохоже, всякий раз, когда вы вызываете 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 голосов
/ 19 декабря 2011

Если я правильно понял, ваша проблема в том, что extractTableInfo() всегда возвращает пустой ArrayList.

Поскольку у вас есть строка

extractedInfo.add(rowInfo);

В вашем коде extractedInfo должноне быть пустым, если эта строка когда-либо выполняется.Даже если бы rowInfo было null, чего никогда не было, оно было бы добавлено в список.Имея это в виду, вы уверены , что nRownCol) больше нуля?Это единственная причина, по которой я вижу, что эта строка не будет выполнена.

...