Java Swing学习
Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。我在学习Swing时遇到了许多困惑,在这里记录一下,以便后续回顾。
JFrame和JPanel详解
刚学习的时候,跟着老师敲,但没有理解这两个东西,导致后面一直搞不清楚Swing的逻辑,查了些资料,现在有点明白了。
举一个不太准确的例子:假设Swing编程就像是我们在画画,我们画的圆圈,方块,文字就相当于Swing中的一个个组件。JFrame相当于一块透明的玻璃板,我们是没有办法在上面直接画画,JPanel相当于一张白纸,把这张白纸放到玻璃板上,就可以在纸上画出圆圈,方块和文字了。
JFrame是不能直接放置组件的,因为JFrame 不是一个容器,它只是一个框架。JFrame 有一个 Content Pane,窗口能显示的所有组件都是添加在这个 Content Pane 中。JFrame 提供了两个方法:getContentPane 和 setContentPane 就是用于获取和设置其 Content Pane 的。
先说setContentPane方法,常见于这样写:建立一个Jpanel中间容器,把组件添加到容器中,用setContentPane方法把该容器置为JFrame的内容面板
|
|
再说说getContentPane方法,常见于这样写:不用建立中间容器,直接用getContentPane().add()
方式添加组件。getContentPane是得到了jframe的内容面板。
|
|
注意:在1.5版本之后,可以不用getContentPane,直接使用add方法即可。
容器和组件
容器:JFrame(窗体),JDialog(对话框),JPanel(面板)
顶级容器:也称窗口。JFrame 和 JDialog 是最为常用也是最为简单的顶级容器
中间容器:也称面板组件。常见有:JPanel和JScrollPane(带滚动条的面板)。不常见的:JInternalFrame和JRootPane(可以直接从顶层容器中获得)
组件:button,label等
总结梳理: 在Swing中,任何其他组件都必须位于一个顶层容器中(如JFrame)。中间容器是为了容纳其他组件而存在的,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。
组件使用
JMenuBar:顶部菜单栏
JTabbedPane:选项卡面板
布局管理器
注意:JFrame和JDialog默认布局为BorderLayout,JPanel和Applet默认布局为FlowLayout
参考:https://www.cnblogs.com/meteor119/p/15218920.html
流式布局:FlowLayout
边界布局:BorderLayout
网格布局:GridLayout
空布局/绝对布局:null