JPanel面板容器类

来源:互联网 发布:足球竞彩数据分析app 编辑:程序博客网 时间:2024/05/02 00:34

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


0 0