JPanel面板容器类

JPanel 是 Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,是一种轻量级容器,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField 等,功能是对对窗体上的这些控件进行组合,相当于C++和C#中的Panel类。


简介


JPanel 是 Java 图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合。

所有已实现的接口:

ImageObserver, MenuContainer, Serializable, Accessible

直接已知子类:

AbstractColorChooserPanel, JSpinner.DefaultEditor
JPanel 是一般 轻量级容器.

使用方法


JPanel 可以为添加到窗体中的轻型 控件提供通用的容器。默认情况下,面板容器不会向控件添加任何除自身背景之外的颜色,但是,可以轻松地向其添加边框(borders) 并根据需要改制样式。
在大多数Java GUI外观体验( look and feel)中,面板容器默认是不透明。不透明的面板容器跟普通的目录窗格功能差别不大,并且可以有效帮助样式改进。

设置图层管理器

和其他 容器( container)一样,面板容器 panel 也使用布局管理器(Layout Manager)对添加到容器中的组件(compnent)进行定位和设置尺寸大小。默认情况下,面板容器的布局管理器是 FlowLayout(流式布局)类的一个实例,这个类对放置在容器中的空间按行进行布局(从左到右诸行排列)。 [在创建面板容器时,你可以轻松地使用任何其他布局管理器通过调用 setLayout方法或指定一个布局管理器。
如下是一个在创建面板容器时设置图层管理器的例子:
1
JPanel p =  new  JPanel( new  BorderLayout());
但这种方法不能用在BoxLayout(盒子布局)中,因为BoxLayout 构造器需要一个预留(pre-existing)容器。如下所示:
1
2
JPanel p =  new  JPanel();
p.setLayout( new  BoxLayout(p, BoxLayout.PAGE_AXIS));

添加控件

向面板容器中添加组件时使用add()方法,而向add()方法中传递的参数决定于该面板容器使用哪个布局管理器。当所用的布局管理器是FlowLayout,BoxLayout, GridLayout,或SpringLayout 时,像通常那样向add()方法传递单一的参数即可,如下所示: [2]  
1
2
aFlowPanel.add(aComponent);
aFlowPanel.add(anotherComponent);
而当布局管理器为 BorderLayout时,还需要提供另一个参数来指定添加到容器中控件的位置,例如:
1
2
aBorderPanel.add(aComponent, BorderLayout.CENTER);
aBorderPanel.add(anotherComponent, BorderLayout.PAGE_END);
对于GridBagLayout布局管理器,可以使用上述任一方法,但必须以某种方式对每个组件指定GridBagConstraints,例如:
1
2
JPanel pane =  new  JPanel( new  GridBagLayout());
GridBagConstraints c =  new  GridBagConstraints();

警告

Swing 不是 线程安全的。
此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)

构造方法


JPanel() 创建具有 双缓冲和流布局的新 JPanel。
JPanel(boolean isDoubleBuffered) 创建具有 FlowLayout 和指定缓冲策略的新 JPanel。
JPanel(LayoutManager layout) 创建具有指定布局管理器的新缓冲 JPanel。
JPanel(LayoutManager layout, boolean isDoubleBuffered) 创建具有指定布局管理器和缓冲策略的新 JPanel


你可能感兴趣的:(JPanel面板容器类)