我正在尝试使用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);
}
}
答案 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);
};
}
}