【问题标题】:How to get the path name outside the loop?如何获取循环外的路径名?
【发布时间】:2017-09-14 18:19:48
【问题描述】:
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
}                                       

【问题讨论】:

  • 1) 对于按钮,添加 ActionListener 而不是鼠标侦听器。按钮侦听器将响应机器人鼠标和键盘输入。 2)研究“可变范围”,这是一个在接近高级领域(如制作 GUI)之前应该明确的主题。 3) 好的.. 我刚刚注意到(关于第 (1) 点)这段代码正在添加一个鼠标侦听器 inside 动作侦听器的动作执行方法!这是没有意义的。删除所有提及鼠标侦听器的内容。
  • 你为什么要在ActionListener里面的按钮上加一个MouseListener

标签: java image swing static path


【解决方案1】:

初始化一个字段并为其分配所需的值:

private String pathName;

jButton3.addMouseListener(new MouseAdapter() {
    ....
    pathName = fc.getSelectedFile().getPath();
    ....
});
System.out.println(pathName);

【讨论】:

    【解决方案2】:

    pathName 变量是在 mouseClicked 函数内创建的 - 因此一旦函数完成,它将被销毁。

    您可以在函数内部使用它,这就是您的第一个 printLn 语句有效的原因,但它不会存在于外部。要解决此问题,请将数据分配给在函数启动之前已经存在的变量,以便在函数结束后继续存在。

    String pathName = null; 移动到更高的范围内(比如移动到包含此代码片段的类中),这将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多