Java 从另一个方法调用变量
我是eclipse新手,在从其他方法调用变量时遇到问题,例如:Java 从另一个方法调用变量,java,eclipse,swing,file-io,jfilechooser,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.showD
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:)我猜你的意思是访问你的对象,而这与Eclipse无关
您的对象文件位于匿名类中。在匿名类之外定义变量,就可以了。我猜您的意思是访问您的对象,而这与eclipse无关
您的对象文件位于匿名类中。在匿名类之外定义变量,就可以了。prnfile是mouseClicked的if块的局部变量,因此当控件从该if块中出来时,prnfile将被垃圾收集,其引用将消失。因此,您无法从if块外部访问它。prnfile是鼠标点击的的if块的局部变量,因此当控件从该if块出来时,prnfile被垃圾收集,其引用消失。因此,您无法从if块外部访问它。您需要做的是取消文件引用,使其成为全局变量。正如现在所写的,prnFile只是一个局部变量,您将无法在另一个metod中看到该变量,它将在创建后由GC收集。就拿这部分来说:
File prnfile = new File(fc.getSelectedFile().toString());
并移动
文件文件文件代码>在您的方法之外。在第一个侦听器中,您只调用prnFile=new File(fc.getSelectedFile().toString())
现在,您可以从“打印侦听器”获取存储在prnFile
中的值您需要做的是取出prnFile reference,使其成为一个全局变量。正如现在所写的,prnFile只是一个局部变量,您将无法在另一个metod中看到该变量,它将在创建后由GC收集。就拿这部分来说:
File prnfile = new File(fc.getSelectedFile().toString());
并移动文件文件文件代码>在您的方法之外。在第一个侦听器中,您只调用prnFile=new File(fc.getSelectedFile().toString())
现在您可以从“打印侦听器”“调用变量”获取存储在prnFile
中的值了?这毫无意义。你调用方法,而不是变量。你是说访问变量吗?顺便说一句,这与Eclipse无关。我建议你读一本关于Java的好书,开始阅读。你不能从另一个方法中看到局部变量。例如,您需要创建一个实例字段。这一部分与C#完全没有区别。实际上,您使用的是两个匿名内部类。一个创建一个局部变量文件
,另一个尝试访问它。这是不可能的。您应该在两个匿名内部类上方的类中创建文件
。只有这样,它才能在这两种方法中都可见和可访问。“从其他方法调用变量时遇到问题”这类内容将在Java教程的早期阶段介绍。创建GUI要晚得多。为什么不回到教程的基础知识上来,暂时把GUI开发放在一边呢?顺便说一句,在你理解基本的OO之前就把IDE扔进这个混合体是一个灾难,依我看,“调用一个变量”?这毫无意义。你调用方法,而不是变量。你是说访问变量吗?顺便说一句,这与Eclipse无关。我建议你读一本关于Java的好书,开始阅读。你不能从另一个方法中看到局部变量。例如,您需要创建一个实例字段。这一部分与C#完全没有区别。实际上,您使用的是两个匿名内部类。一个创建一个局部变量文件
,另一个尝试访问它。这是不可能的。您应该在两个匿名内部类上方的类中创建文件
。只有这样,它才能在这两种方法中都可见和可访问。“从其他方法调用变量时遇到问题”这类内容将在Java教程的早期阶段介绍。创建GUI要晚得多。为什么不回到教程的基础知识上来,暂时把GUI开发放在一边呢?顺便说一句,在您理解基本OO之前将IDE加入到混合中是一个灾难,IMO。感谢所有人的回复,因为eclipse没有“designer.cs”之类的东西,所有gui代码都在类中,(而且在eclipse中完全是noob,甚至是java)我只是不知道按钮是在哪里创建的,全局变量是在哪里,甚至主变量是在哪里:)谢谢大家的回复,因为eclipse没有“designer.cs”之类的东西,所有gui代码都在类中,(而且在eclipse中完全是noob,甚至是java)我只是不知道按钮是在哪里创建的,全局变量是在哪里,甚至主变量是在哪里:)