从另一个读取值的类访问数据

时间:2015-11-17 14:36:11

标签: java class

好的,所以这是一个问题:我有一个主类,它生成一个窗口和两个按钮:

          ...
            public MainWindow()
            {           
          ...

                b_read.addActionListener(new ReadStudents());
                b_open_all.addActionListener(new OpenStudents());
          ...

在ReadStudents.java类中,我使用JFileChooser从文件加载数据并将其打印在屏幕上。加载文件的代码示例:

@Override
    public void actionPerformed(ActionEvent e) {
       ...
        JFileChooser fc = new JFileChooser(".");
       ...
        int rez = fc.showOpenDialog(fc);
        if (rez == JFileChooser.APPROVE_OPTION) {
            file = fc.getSelectedFile();
            ...

现在在我的ReadStudents.java类变量" file"有我加载的信息。 如何将包含信息的变量传递给在屏幕上打印学生的类(第二个按钮OpenStudents.java)?

编辑:1)我无法在OpenStudents.java类中初始化ReadStudents.java的对象,因为在新的对象变量" file"将是空的。有东西被加载到"文件"仅当按下按钮b_read时才会显示。

1 个答案:

答案 0 :(得分:0)

一种选择是在MainWindow类上实现动作侦听器,并在ReadStudents / OpenStudents中调用返回文件列表的方法。

例如:

/**
 * Main window class.
 */
public static void main(String args[]) {
    JFrame mainFrame = new JFrame();
    mainFrame.setLayout(new BorderLayout());
    mainFrame.setSize(100, 100);
    final StudentReader student = new StudentReader();

    JButton button = new JButton("Click Me");
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // Make the call here. Take note!
            // Look at the return type!
            List<String> strings = student.fileNames();
            for (String s : strings) {
                System.out.println(s);
            }
        }
    });
    mainFrame.add(button);
    mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    mainFrame.setVisible(true);
}

public class StudentReader {
    public List<String> fileNames() {
        // Do your magic here :)
        // Open a dialog. Get the files.
        // Return it as a list
        return Arrays.asList(new String[]{"Filename"});
    }
}

我希望这有帮助!