addRow到单独的Eclipse类中的DefaultTableModel

时间:2013-10-22 12:26:54

标签: java swing jtable defaulttablemodel

我创建了一个DefaultTableModel,它在JTabbedPane中显示了一个非常基本的用户联盟表。

我想使用从不同类中收集的一些数据添加一行。此代码不会运行,但这里有一个示例:

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要求我向Statistics类添加一个名为'addRow'的方法,但我认为'addRow'已经是DefaultTableModel的一个方法,所以我很困惑。任何人都可以帮我解决如何向表中添加一行数据的问题吗?谢谢IA

2 个答案:

答案 0 :(得分:2)

addRowTableModel的一种方法,但您正在调用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,因此可能需要重新设计

答案 1 :(得分:2)

leagueTable是您Statistics课程的一个实例。所以它没有addRow()方法。

可能的解决方案:

  • DefaultTableModel课程中为Statistics变量。
  • 在Statistics中创建一个与表模型交互的方法 在模型上调用addRow()