我在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中不起作用,所以我不知道去哪里(作为一个完整的菜鸟:))
答案 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 被垃圾收集,其引用已经消失。因此,如果阻止,你无法从外部访问它。