0

我有一个打开文件选择器对话框的菜单项。在该对话框中,应选择并打开一个文件。如果文件有效,则应将其中的数据添加到主机内容窗格上的表格中。我能够实现一切,但在检查后将数据文件从 OpenFile 获取到 MainWindow。代码示例:

public class MainWindow extends JFrame {
    MainWindow() {
        //setting frame size, visibility, etc.
        JMenu m = new JMenu("File");
        JMenuItem mi = new JMenuItem("Open");
        mi.addActionListener(new OpenFile());
        m.add(mi);
        JMenuBar mb = new JMenuBar();
        mb.add(m);
        setJMenuBar(mb);
        JTable table = new JTable();
    }
}

class OpenFile implements ActionListener {
    File file;
    @Override
    public void actionPerformed(ActionEvent e) {
        //opening file chooser dialog, getting file, checking that file is valid
    }
}
4

1 回答 1

2

TableModel负责在其内容或结构发生更改时向表提供通知,使表有机会决定如何最好地更新自身以满足更改的要求

看看如何使用表和特别是触发数据更改事件......

更新

为了能够操作TableModel,您需要对它的引用。最终的解决方案将取决于您如何实现表模型,但基本概念是相同的。

public class OpenFile implements ActionListener {

    private YourTableModel model;

    public OpenFile (YourTableModel model) {
        this.model = model;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //...
        model.updateModelWithContent(...); // Or what ever method you provide
    }

您传递给此类的模型应该与您提供给表的模型相同。

于 2013-10-28T23:07:24.500 回答