Java 如何获取循环外部的路径名?
初始化字段并为其指定所需的值:Java 如何获取循环外部的路径名?,java,image,swing,static,path,Java,Image,Swing,Static,Path,初始化字段并为其指定所需的值: private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { jButton3.addMouseListener(new MouseAdapter() { //String pathName; @Override public void mouseClicked(MouseEvent arg0) { St
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
jButton3.addMouseListener(new MouseAdapter() {
//String pathName;
@Override
public void mouseClicked(MouseEvent arg0) {
String pathName = null;
FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg");
fc.setFileFilter(filter);
int response = fc.showOpenDialog(null);
try {
if (response == JFileChooser.APPROVE_OPTION) {
pathName = fc.getSelectedFile().getPath();
System.out.println(pathName); // this works
//JOptionPane.showMessageDialog(null, pathName);
ImageIcon icon = new ImageIcon(pathName);
jLabel4.setIcon(icon);
} else {
// JOptionPane.showMessageDialog(null, "Feel Free to Look Later");
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
System.out.println(pathName); // THIS DOESNOT
}
pathName
变量是在mouseClicked
函数中创建的,因此一旦函数完成,它将被销毁
您可以在函数内部使用它,这就是为什么您的第一个printLn语句可以工作,但它不会存在于函数外部。若要解决此问题,请将数据分配给函数启动前已存在的变量,以便该变量在函数结束后继续存在
移动
字符串路径名=null代码>进入一个更高的范围(如进入包含此代码的类),这将起作用。1)对于按钮,添加一个ActionListener
,而不是鼠标侦听器。按钮侦听器将响应机器人鼠标和键盘输入。2) 研究“可变范围”,这是一个在进入高级领域(如制作GUI)之前应该明确的主题。3) 好的。。我刚刚注意到(关于(1))这段代码在action listener的action performed方法中添加了一个鼠标侦听器!这毫无意义。删除对鼠标侦听器的所有提及。为什么要在其ActionListener
内的按钮中添加鼠标侦听器?
private String pathName;
jButton3.addMouseListener(new MouseAdapter() {
....
pathName = fc.getSelectedFile().getPath();
....
});
System.out.println(pathName);