功能描述:将 JFileChooser 选中的文件路径显示在 JTextField 中。(actionLinstener类和显示是分开的,就是说是两个类)问题描述:
两个类 MyView 用于 UI显示, MyLinstener 用于侦听事件处理。
在MyView类中有两个组件一个JButton 一个JTextField,linstener侦听到JButton的点击事件后,启动一个JFileChooser,让用户选中目标文件,然后将目标文件的路径显示在JTextField里,文件的路径是在linstener中拿到的,怎么将该内容送回到MyView类中的JTextField上呢?请教了,谢谢!
两个类 MyView 用于 UI显示, MyLinstener 用于侦听事件处理。
在MyView类中有两个组件一个JButton 一个JTextField,linstener侦听到JButton的点击事件后,启动一个JFileChooser,让用户选中目标文件,然后将目标文件的路径显示在JTextField里,文件的路径是在linstener中拿到的,怎么将该内容送回到MyView类中的JTextField上呢?请教了,谢谢!
或者不能将listener类独立出来?
因为事件类代码并不多
一般都写成内部类的如果要独立出来的话 那就要UI类在listener里放一个引用
Listener类独立的话,想要在Listener对象中放UI对象的引用,其实也是比较难做到的。
一种方式是可以在主窗口或代表Application的主类上放静态属性,方便UI设值,也方便Listener取值。
MyLinstener implements ActionListener-----------------JButton b=new JButton();b.addActionListener(new MyLinstener()); //注册事件处理器
MyButton extends JButton{
private MyView view;//你的UI
public MyButton(MyView view,String buttonName){
super(buttonName);
this.view=view;
}
}
------在MyView 中创建Button-----
MyButton b=new MyButton(this,"buttonName");
--------MyLinstener中获取UI------
Object b=e.getSource();
MyButton mb=(MyButton )b;
MyView view=mb.view;