好的,所以这是一个问题:我有一个主类,它生成一个窗口和两个按钮:
...
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时才会显示。
答案 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"});
}
}
我希望这有帮助!