设置返回值但Get返回null

时间:2018-03-20 15:15:14

标签: java

我正在尝试使用Set& amp;来保存用户选择的文件路径。获取,当用户在文件选择器中单击“保存”时,路径将返回到我的set方法 - 使用System.out.println显示。但是当我尝试使用get时,值返回null。这是为什么?

我的动作监听器类:

public class Action implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {

        GetSet get = new GetSet();

        if(e.getSource().equals(saveProject)){

            try {
                CreateProject op = new CreateProject();
                loadProjectUrl = op.setProjectUrl();                    
                get.setLoadProjectUrl((String)loadProjectUrl);

                File file = new File(loadProjectUrl);

                //Create the file
                if (file.createNewFile()){
                    System.out.println("File is created!");

                }else{
                    System.out.println("File already exists.");
                }
            } catch (IOException ex) {
                Logger.getLogger(DoubleViewer.class.getName()).log(Level.SEVERE, null, ex);
            }

        };

        if(e.getSource().equals(ruler)){
            System.out.println("ruler button clicked");
            String a = get.getLoadProjectUrl();
            System.out.println(a);
        };
    }
}

我的getSet类:

public class GetSet {

    String loadProjectUrl;

    public String getLoadProjectUrl(){

        return loadProjectUrl;

    }

    public void setLoadProjectUrl(String loadProjectUrl){

        this.loadProjectUrl = loadProjectUrl;
        System.out.println("set url = "+ loadProjectUrl);

    }
}

1 个答案:

答案 0 :(得分:3)

每次调用侦听器时,您都会创建一个 NEW GetSet对象,因此即使您正在更改其状态,也不会产生任何影响在下一个例子。创建这些对象的 ONE ,而不是在侦听器的回调方法(INSERT INTO TABLE PARTITION (date_created)方法)中,而是作为类的字段,并更改其状态。

例如,改变这个:

actionPerformed(...)

到此:

public class Action implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {

        GetSet get = new GetSet();
        if(e.getSource().equals(saveProject)){
            try {
                CreateProject op = new CreateProject();
                loadProjectUrl = op.setProjectUrl();                    
                get.setLoadProjectUrl((String)loadProjectUrl);

                // ....
                }
            } catch (IOException ex) {
                Logger.getLogger(DoubleViewer.class.getName()).log(Level.SEVERE, null, ex);
            }
        };

        if(e.getSource().equals(ruler)){
            System.out.println("ruler button clicked");
            String a = get.getLoadProjectUrl();
            System.out.println(a);
        };
    }
}