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
}
答案 0 :(得分:0)
初始化字段并为其指定所需的值:
private String pathName;
jButton3.addMouseListener(new MouseAdapter() {
....
pathName = fc.getSelectedFile().getPath();
....
});
System.out.println(pathName);
答案 1 :(得分:0)
pathName
变量是在mouseClicked
函数内创建的 - 因此一旦函数完成就会被销毁。
你可以在函数中使用它,这就是你的第一个printLn语句工作的原因,但它不会在外面存在。要解决此问题,请将数据分配给函数启动前已存在的变量,以便在函数结束后继续存在。
将String pathName = null;
移动到更高的范围(比如包含此代码的类被剪切),这将有效。