2012-04-10 25 views
0

我在日食相当新的,具有调用其他方法的变量,如问题:调用从另一个方法的变量

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中工作,所以我不知道该去哪里(作为一个完整的noob :))

+3

“调用变量”?这是没有意义的。你调用方法,而不是变量。你的意思是访问变量?顺便说一句,这与Eclipse无关。我建议你写一本关于Java的好书并开始阅读。 – m0skit0 2012-04-10 09:41:14

+0

您无法从另一种方法看到局部变量。例如,您需要创建一个实例字段。这部分与C#完全没有什么不同。 – Thilo 2012-04-10 09:42:25

+0

实际上,您正在使用两个匿名内部类。一个创建一个局部变量'File',然后尝试访问它。这不可能。您应该在两个匿名内部类之上的类中创建“File”作为字段。只有这样,它们才能在两者中可见和可访问。 – 2012-04-10 09:46:03

回答

3

你需要做的是提出prnFile refrence,使其成为一个全局变量。就像现在写的那样,prnFile只是一个局部变量,你不能在另一个metod中看到这个变量,它在创建后会被GC收集。所以采取这部分:

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

和移动File prnFile;以外的方法。在第一个听众中,您只需拨打prnFile= new File(fc.getSelectedFile().toString());,现在您可以从“打印听众”中获取prnFile中存储的值

+0

感谢所有的回复,因为eclipse没有“designer.cs”类的东西,所有的gui代码都在类里面(并且在eclipse中甚至是完全noob;使那个java)我只是无法图在哪里创建按钮或全局变量,甚至在主要的位置:) – Sin5k4 2012-04-10 10:12:11

1

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

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

1

prnfile如果块的局部变量的mouseClicked,因此,当控制出来的那个如果块;所述prnfile是垃圾收集和其参考消失。所以你不能从外面访问,如果阻止。

相关问题