从另一个方法调用变量

时间:2012-04-10 09:39:10

标签: java eclipse swing file-io jfilechooser

我在eclipse中很新,并且在从其他方法调用变量时遇到问题,例如:

    btnNewButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {

            final JFileChooser fc = new JFileChooser();
            int returnVal = fc.showDialog(fc, null);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File prnfile = new File(fc.getSelectedFile().toString());

            }

        }

    });
    btnNewButton.setBounds(54, 164, 89, 23);
    frame.getContentPane().add(btnNewButton);

    JButton btnNewButton_1 = new JButton("print");
    btnNewButton_1.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {


              File file = new File(prnfile);
                int ch;
                StringBuffer strContent = new StringBuffer("");
                FileInputStream fin = null;
                try {
                  fin = new FileInputStream(file);
                  while ((ch = fin.read()) != -1)
                    strContent.append((char) ch);
                  fin.close();
                } catch (Exception e1) {
                  System.out.println(e);
                }



    });
    btnNewButton_1.setBounds(257, 164, 89, 23

现在,我如何从其他方法调用“prnfile”?通常我会在c#中创建一个公共对象,但它在Eclipse中不起作用,所以我不知道去哪里(作为一个完整的菜鸟:))

3 个答案:

答案 0 :(得分:3)

你需要做的是取消prnFile参考,使其成为一个全局变量。正如现在所写,prnFile只是一个局部变量,你将无法在另一个metod中看到该变量,它将在GC创建后收集。所以请参考这一部分:

File prnfile = new File(fc.getSelectedFile().toString());

并在您的方法之外移动File prnFile;。在第一个监听器内部,您只需调用prnFile= new File(fc.getSelectedFile().toString());,现在您将能够从“打印监听器”中获取存储在prnFile内的值

答案 1 :(得分:1)

我猜你的意思是访问你的对象,这与eclipse无关。

您的对象prnfile位于匿名类中。在匿名类之外定义你的变量,你做得很好。

答案 2 :(得分:1)

prnfile mouseClicked if 块的局部变量,因此当控件出现时如果 >阻止, prnfile 被垃圾收集,其引用已经消失。因此,如果阻止,你无法从外部访问它。