2016-05-02 5 views
0

オブジェクト配列からJTableを作成しようとしましたが、何も表示されません。テーブルに値を設定するメソッドコードを次に示します。 system.out.printlnを使用すると、データが正しく渡されているかどうか、変数内に値があるかどうかを確認できます。arrylistの値をjtableに渡す

public void populateTable(ArrayList<Outlet> outletList, String selection){ 
    f = new Fourth(); 
    for(int i = 0; i<outletList.size(); i++){ 
     if(outletList.get(i).getCity().equalsIgnoreCase(selection)){ 
      if(outletList.get(i).getStatus().equals("ACTIVE")){ 

       String bar = outletList.get(i).getBarangay(); 
       String code = Integer.toString(outletList.get(i).getCode()); 
       String name = outletList.get(i).getName(); 


       System.out.println(bar); 
       System.out.println(code); 
       System.out.println(name); 

       Object[] data = {bar, code, name}; 

       System.out.println("DATA: " + data[0].toString()); //correct 
       System.out.println("DATA: " + data[1].toString()); //correct 
       System.out.println("DATA: " + data[2].toString()); //correct 

       f.getDtm().addRow(data); 
      } 
     } 
    } 
} 

このメソッドは、ユーザーがコンボボックスから項目を選択するときに呼び出されます。インターフェースからのデータが表示されている場合でも、

String[] columnNames = new String[]{"Barangay", "Name", "Code"}; 
    dtm = new DefaultTableModel(columnNames, 0); 
    pjpTable = new JTable(dtm);   

    scrollPane = new JScrollPane(getPjpTable()); 
    tablePanel.add(new JScrollPane(getPjpTable())); 

    mainFrame.add(mainPanel); 
    mainFrame.add(tablePanel,BorderLayout.SOUTH); 

のみテーブルヘッダが表示されます。ここでは

cityCombobox1.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      selCity1 = cityCombobox1.getSelectedItem().toString(); 
      if(itr.next() == "Non-Citadel"){ 
       outlet.populateTable(outletList1, selCity1); 
      } 
     } 

はテーブルとのDefaultTableModelのための私のGUIコードです:このパネルは、JTableは作成される前ページですコンソールで誰かがJTableにデータ値を正しく渡す方法についての解決策を持っているなら、それはすばらしいでしょう!私は、列名を持つ を設定すると思いますが、テーブルに

dtm = new DefaultTableModel(columnNames, 0); 

pjpTable = new JTable(dtm); 

を設定

答えて

1

私はこのコード

String[] columnNames = new String[]{"Barangay", "Name", "Code"}; 
    dtm = new DefaultTableModel(columnNames, 0); // here dtm is blank (No Data available at the time of Initializing. 

    pjpTable = new JTable(dtm);  //JTable is Initialized with a Blank Data. 

に問題があることを考えて、あなただけnew JTable(dtm)としてJTableを初期化する前に、空白データとdtmを埋めるべきです。

dtmオブジェクトは、新しい行がdtmに追加された後にテーブルを再描画しようとしません。

f.getDtm().addRow(data); 

だから、あなたはちょうどあなたがもう一度あなたのTableを描画する必要があり、この後event cityCombobox1.addActionListener

cityCombobox1.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      selCity1 = cityCombobox1.getSelectedItem().toString(); 
      if(itr.next() == "Non-Citadel"){ 
       outlet.populateTable(outletList1, selCity1); // data is getting filled here. 
      } 
     } 

を呼んでくださいとき。それだけであなたのテーブルに正しく挿入されます。

もう1つの提案。代わりにあなたがequalsメソッドを使用する必要があります==

if(itr.next() == "Non-Citadel")==Stringオブジェクトの参照を確認するために使用され、equalsは実際の値と比較されるためです。

0

、あなたはそれをテーブルに設定し前に、DTM を埋めるようにしてみてください。そして、私はあなたのコードの設計と

+0

f = new Fourth(); JTableとDefaultTableModelを保持するGUIクラスです。そのために残念!あなたの提案を試してみる – beyonchayyy

+0

これは、私にとっても、メソッドの悪い設計(populateTable)のようなものです。このメソッドがString [] [] datasオブジェクトデータの代わりにString []データを返すようにするには、更新後にdtmをテーブルに設定する必要があるかもしれません。 –

-1

あなたの最大の問題は、データバインディングプラットフォームの欠如である...

f = new Fourth(); 

意味を理解didntの。詳細についてはherehereを確認してください。

+0

私は答えを更新しました。彼女はデータバインディングを使用してテーブルデータを即時に見る必要があります。 –

+0

解決策を再度提供していません。コメントの一部でなければならないリンクを回答者として提供しない。してください他の人の答えを返すと車輪を再発明しようとしてください。@cihan –

+0

私は適切な方法でコードを見ることができないため、私は解決策を提供していません。私は彼女のプロジェクトについてもっと知る必要があります。 –

関連する問題