0

JTabbedPane で非常に基本的なユーザー リーグ テーブルを表示する DefaultTableModel を作成しました。

別のクラスから収集したデータを使用して行を追加したいと考えています。このコードは実行されませんが、サンプルは次のとおりです。

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Statistics extends JPanel {
    public Object[][] data;

public Statistics() {
    super(new GridLayout(1,0));
    String[] columnNames = {"Name", "Games Played", "Games Won"};
    Object[][] data = {
            {"Tom", new Integer(5), new Integer(2)},
            {"Steve", new Integer(2), new Integer(0)},
    };
    DefaultTableModel model = new DefaultTableModel(data, columnNames);
    JTable table = new JTable(model);
    table.setFillsViewportHeight(true);
    table.setVisible(true);
    table.setEnabled(false);

    JScrollPane scrollPane = new JScrollPane(table);
    add(scrollPane);
}


}

次に、メインクラスからこれを呼び出します。

...
stats = new JPanel(); //create a new JPanel for table to go on
...
tp.addTab ("Statistics", stats); // add panel to JTabbedPane
..
leagueTable = new Statistics();// add the table to the stats panel
       stats.add(leagueTable);

これは表示されていて問題ありませんが、行を追加するために使用する構文について誰でも教えてもらえますか?私は試しました:

 leagueTable.addRow(table.getRowCount(), new Object[]{"ange", 5, 3});

しかし、これは機能しません。eclipse は「addRow」というメソッドを Statistics クラスに追加するように要求しますが、「addRow」は既に DefaultTableModel のメソッドであると思っていたので、非常に混乱しています。テーブルにデータ行を追加する方法について誰か助けてもらえますか? ありがとうIA

4

2 に答える 2

2

addRowのメソッドですが、クラスTableModelのメソッドを呼び出しています。Statisticsデータを追加する新しいメソッドを作成できます。

public class Statistics extends JPanel {
    private DefaultTableModel model

    public Statistics() {
       super(new GridLayout(1,0));
       model = new DefaultTableModel(data, columnNames);
       ...
    }

    public void addData(Object[] data) {
       model.addRow(data);
    }
}

補足: 通常JPanel、新しい機能を追加しない場合はここを拡張したくないため、おそらく再設計が必要です。

于 2013-10-22T12:28:18.357 に答える