关于JAVA swing 中,事件的问题
假设我有三个类,两个类A和B分别继承了JPanel,A和B在构造函数里都add了一个按钮,分别为JBa和JBb,最后一个类C继承了JFrame,在类C的构造方法中,我ne...
假设我有三个类,两个类A和B分别继承了JPanel,A和B在构造函数里都add了一个按钮,分别为JBa和JBb,最后一个类C继承了JFrame,在类C的构造方法中,我new了A和B,把A和B添加进卡片布局。如何在C类中监听A和B中按钮的事件,实现C类中卡片布局翻面?如果不在A和B构造方法里add按钮,而是在C类中 new A B的时候再把按钮加进去,这样监听按钮事件好写,因为都在C类中,可以用JBa .addActionListener(this);,但是跨类我就不懂了,求大神解答。
展开
1个回答
2016-10-28
展开全部
可以把JBa .addActionListener(this);这句改成其他的:
比如:JBa .addActionListener(A,B类的某个成员字段);
我的意思是,按钮就在A,B、中定义,然后在A类中(B类类似不再重复)的构造函数中new出来并注册时间监听,那么问题来了,谁来监听?建议构造函数这样写:
public A(ActionListener lst){
this.按钮=new Button()//等实例操作,把按钮的所有属性设置好后-->
this.按钮.setActionListener(lst);//把传入的参数设为监听的对象
}
新的问题就是,需要在C类中new A时,就把自己(建议把自己)实现ActionLIstener,然后传入参数就是自己(this):A a =new A(this);
大概是这样,如果要把按钮分离出来,就可以考虑直接new Jpanel()再对象.add()了!
比如:JBa .addActionListener(A,B类的某个成员字段);
我的意思是,按钮就在A,B、中定义,然后在A类中(B类类似不再重复)的构造函数中new出来并注册时间监听,那么问题来了,谁来监听?建议构造函数这样写:
public A(ActionListener lst){
this.按钮=new Button()//等实例操作,把按钮的所有属性设置好后-->
this.按钮.setActionListener(lst);//把传入的参数设为监听的对象
}
新的问题就是,需要在C类中new A时,就把自己(建议把自己)实现ActionLIstener,然后传入参数就是自己(this):A a =new A(this);
大概是这样,如果要把按钮分离出来,就可以考虑直接new Jpanel()再对象.add()了!
追问
额。。。不好意思啊。。。我有点看不懂,成员字段是什么意思。。。你的意思是把this改成别的,就是把当前类的实例改成别的,那改成别的不需要设置静态吗?addActionListener();括号里不是应该写对象名吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询