关于控件属性引用的问题,请各位给个帮助

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:36:38
3个.java文件,其中2个分别是定义JPanel1和JPanel2,一个是JFrame,2个JPanel都是添加在JFrame中,在JPanel中出发按钮事件,将JPanel1不可视,显示JPanel2。但不知道我应该怎么调用JPanel2的SetVisible()。是应该JFrame.JPanel2.setVisible(true)?还是JPanel2.setVisible(true)?
这两个我都试过,都不好用,好像是继承的问题。。偶菜鸟,还请各位高手耐心说明下

三个文件是没有问题的。
关键是你按钮定义在JPanel1里。
这样,在按钮发生事件时,JPanel1中无法访问JPanel2实例。
关键问题在于,从组件层次来说,JPanel1和JPanel是不包含的,那么在一个内部无法访问另一个的(正常情况下)。
既然你把2个JPanel分开写了,就说明有分开的必要性。特别是大项目,要尽量使类的耦合性低。
对于这种问题,有这样一种解决方法。
你想让按钮事件触发JPanel2显示,这个调度属性高一层次的,也就是窗口一级的,不能发生在JPanel1里。
那么,你自己设计一个事件类、事件监听器接口,在JPanel1允许注册事件监听器并且使用Vector或ArrayList管理事件监听器。当按钮点击,回调事件监听器的方法。
在窗口中,向JPanel1注册事件监听器。这样,调度工作就放在了窗口里了。
这种方法能使类的耦合性尽量低。
还有种次一些的方法,在构造JPanel1时,向JPanel1传递JPanel2。

你就1个JFrame
你2个JPanel都是JFrame的属性,都写在JFrame类中,触发事件也写在JFrame类中,就没必要JFrame.XX
别弄成3个文件,不合理,就一个(JFrame)类文件
然后在事件中写 JPanel2.setVisible(true)

和继承有关系吗?没写过C/S结构的