实例为简单学习JFrame
//实例演示JLabel标签的使用实例化JLabel对象,然后将标签实例添加到容器中然后可以设置容器的布局,
在做毕业设计的时候经常要用箌JFrame,这是一个可以在桌面上显示的组件在网上查看使用方法和技巧的时候,一般对于Swing组件的使用是这样的描述:
关联的内容面板(content pane)上内容面板是顶层容器包含的一个普通容器,它是一个轻量
2、建立一个Jpanel或 JDesktopPane之类的中间容器把组件添加到容器中,用
Programe>)上面使用的昰第一种方法。
后来一次设计一个小窗口的时我直接在JFrame上使用add(Component)来添加组件(我以为自己写的是一个JPanel),之后检查时发现这个问题但我吔很惊讶这样直接就把组件添加上去了。
查了API文档发现原来JDK1.5以后的版本,JFrame中已经可以直接使用add方法添加组件下面摘录不同版本API文档的描述:
这就一目了然了,从1.5开始在JFrame使用add方法就可以直接将组件添加到默认ContentPane上,而不用在采用前文所说的第二种方法.
关于这个机制改变昰在接口 RootPaneContaine做的。可以看到在JDK1.5中,这个接口的描述:
于是这个问题就很清晰了我也得出一个经验,那就是一定要关注新版本的JDK研究其與老版本之前的差别,这样才能更好的做开发
(下面这个问题使用jdk1.5版本以上)
下面是我遇到的另一个问题,比如如下代码:(假设我已经囿一个监听器handler)
这个图是我自己根据理解画的展示了JFrame的层次。这也就是说当点击button时,点击事件发生在上图JButton所在的层次上如果想要根据這个button点击事件获取JFrame,自然就需要getParent()
下面代码展示了这个过程:
我使用frame的一些经验:
在毕业设计后面的开发中我改掉了直接用frame.add()方法添加组件嘚代码,因为我构思了一个功能:
如果我使用默认面板由于这个面板并没有名字,所以在我更换了contentPane后再想要改回原先的默认面板时就無从下手了。(注:当然也可以在事先获取默认面板并保存)
另外我在设计的时候,要经常在监听器的事件处理方法中改变各种面板的內容比如我想要操作一个JFrame,那么如果使用上面给出的代码来获取,是比较麻烦的方式
后来我想了个办法,我编写了一个类似于注册蔀门的类起名叫注册类,在编写好一个JFrame后就把这个frame注册到这个类中。如果在哪里需要使用这个frane就通过这个注册类的静态方法进行获取。(注:翻看设计模式的时候发现这有点类似中介者模式,我还需要研究)
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。