如何获取循环外的路径名?

时间:2017-04-18 18:57:18

标签: 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) {
            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
}                                       

2 个答案:

答案 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;移动到更高的范围(比如包含此代码的类被剪切),这将有效。