我已经开始使用GUI和监听器。我想从另一个实现ActionListener的类中选择并将文件从pc设置到Hlavna类中的“File zvolenysubor”中。 我可以在侦听器的actionPerformed方法中选择文件,并将其设置为“File subor”,但我无法将其保存到我的主文件夹中的“File zvolenysubor”(以及我的所有想法如何做到这一点都失败了)。 我应该更改/添加那里吗?不能通过监听器设置变量
这里是我的课:
public class Hlavna {
public static void main(String[] args) {
File zvolenysubor = null;
JFrame frame = new JFrame("ABCDE");
JButton vybersuboru = new JButton("vyber");
vybersuboru.setBounds(220, 15, 200, 20);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640, 480);
frame.add(vybersuboru);
frame.setLayout(null);
VyberListener list1 = new VyberListener(zvolenysubor);
vybersuboru.addActionListener(list1);
vybersuboru.setText("vyber subor");
}
}
public class VyberListener implements ActionListener {
private File subor;
public VyberListener(File subor){
this.subor = subor;
}
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
System.out.println("lol");
FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
chooser.showOpenDialog(null);
subor = chooser.getSelectedFile();
System.out.println(subor.getAbsolutePath());
}
}
是的,这就是我想要做的,更新“文件zvolenysubor”,这是主要的方法。有没有可能在actionPerformed中以某种方式更新它? – 2013-02-08 13:28:35
当然,你失败了,因为你正在向VyberListener构造函数传递空指针。你没有传递任何对象的引用! – 2013-02-08 13:38:12
啊,真的。那么如何将zvolenysubor的参考传递给构造函数呢? – 2013-02-08 13:43:43