如何从actionPerformed返回值到构造函数

时间:2019-02-12 21:25:19

标签: java

我试图在标签(ecran)上显示我刚刚使用FileDialog对象选择的文件和路径。

但是它不起作用。 我的代码返回的是空值,我不知道为什么。

你能帮我吗?

import java.awt.*;
import java.awt.event.*;
import java.io.*;

class FerPrinc extends Frame implements ActionListener{
    Label ecran;
    public String path = null;
    public FerPrinc(String titlu){
        super(titlu);
        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });

        final Label ecran = new Label();
        add(ecran, BorderLayout.SOUTH);

        Button b = new Button("Choose file");
        add(b, BorderLayout.NORTH);
        b.addActionListener(this);

        System.out.println (path);
        ecran.setText(path);

        pack();
    }

    public void actionPerformed(ActionEvent e){
        FileDialog fd = new FileDialog(this, "Choose file", FileDialog.LOAD);
        fd.setDirectory(".");
        fd.show();

        path = fd.getDirectory()+fd.getFile();
        //System.out.println (path);
        //ecran.setText(path);
    }
}

public class TestFileDialog {
    public static void main (String[] args) {
        FerPrinc f = new FerPrinc("Test Dile Dialog");
        f.show();

}
}

实际结果为NULL。 我希望看到我选择的文件的完整路径。

1 个答案:

答案 0 :(得分:0)

您不能,这不是ActionListener或GUI的工作方式。像大多数GUI一样,Swing是事件驱动的,发生某些事情,您对此做出反应,这不是线性的。在按钮上注册ActionListener不会停止代码执行,不会等待用户按下按钮,如果他们从不执行该怎么办?相反,您需要等到ActionListener被触发并随后执行关联的操作。

这是观察者模式的基本概念。

我认为您需要花更多时间来浏览Creating a GUI With JFC/SwingHow to Use Buttons, Check Boxes, and Radio ButtonsHow to Write an Action Listener,因为这是开始编写自己的应用程序之前应了解的API的基本概念