0

我在 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 中不起作用,所以我不知道去哪里(作为一个完整的菜鸟 :))

4

3 回答 3

3

您需要做的是解除 prnFile 引用,使其成为全局变量。正如现在所写的那样,prnFile 只是一个局部变量,您将无法在另一个方法中看到该变量,它将在创建后由 GC 收集。所以采取这部分:

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

并移出File prnFile;你的方法。在您仅调用的第一个侦听prnFile= new File(fc.getSelectedFile().toString());器中,现在您将能够prnFile从“打印侦听器”中获取存储在其中的值

于 2012-04-10T09:45:27.773 回答
1

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

您的对象 prnfile 位于匿名类中。在匿名类之外定义你的变量,你就可以了。

于 2012-04-10T09:43:51.860 回答
1

prnfile是mouseClicked的if块的局部变量,因此当控制脱离该if块时,prnfile被垃圾收集并且它的引用消失了。所以你不能从 if 块之外访问它。

于 2012-04-10T09:44:27.853 回答