虽然您的代码可能还有其他未知问题,但一个明确的问题是作用域问题:您在代码的局部区域声明了一个变量,并且仅在该区域内可见,同时,您的程序需要该变量在程序内其他地方保存的信息。
if (event.getSource() == Importer) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal =chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
// **** here ****
String fullpath = chooser.getSelectedFile().getAbsolutePath();
System.out.println(fullpath);
}
}
正如这样宣布的:
String fullpath = chooser.getSelectedFile().getAbsolutePath();
每爪哇
范围界定
规则
fullpath
变量在if块中可见,并且
只有
在if块内。如果需要在类中的其他位置使用它,则应将其声明为类的字段:
public class MyClass {
private String fullpath = "";
private JButton someButton = new JButton("some button");
public MyClass() {
someButton.addActionListener(e -> {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
// *** no, don't declare it here ***
// String fullpath = chooser.getSelectedFile().getAbsolutePath();
// *** rather *use* the class field here
fullpath = chooser.getSelectedFile().getAbsolutePath();
System.out.println(fullpath);
}
});
}
}
现在
完整路径
变量
以及它可能包含的信息
,在整个代码中都可见