JPanel的使用

来源:互联网 发布:中国的gis数据交换中心 编辑:程序博客网 时间:2024/04/30 11:53

JPanel的使用:

类层次结构图:
java.lang.Object    --java.awt.Component    --java.awt.Container       --javax.swing.JComponent            --javax.swing.JPanel

Panel民是java中时常用到的容器之一,Panel除了可以让组件加入外,有效的利用Panel可以使版面管理更为容易。Swing的 JPanel支持double buffering的功能,使得JPanel在处理动画上更为流畅,较不会有画面闪烁的情况发生。下面为它的构造函 数:

JPanel构造函数:

JPanel():建立一个具有double buffering功能的JPanel,默认的版面管理是Flow Layout.

JPanel(boolean isDoubleBuffered):选择建立是否具有double buffering功能的JPanel,默认的版面管理是Flow Layout.

JPanel(LayoutManager layout):建立一个具有double buffering功能JPanel,可自定义版面管理器.

JPanel(LayoutManager layout,boolean isDoubleBuffered):选择建立是否具有double buffering功能的JPanel,并自定义版面管 理器.

下面这个例子我们用JPanel来排列5个JLabel对象,你将可以发现利用JPanel搭配版面管理,可以做出更复杂的排列效果。

JPanel1.java
import java.awt.*;    import java.awt.event.*;    import javax.swing.*;        public class JPanel1    {    public JPanel1()    {    JFrame f = new JFrame("JPanelDemo");    Container contentPane = f.getContentPane();    contentPane.setLayout(new GridLayout(2,1));    JLabel[] label = new JLabel[5];        for(int i=0; i< label.length ; i++)        {            label[i] = new JLabel("Label "+(i+1),JLabel.CENTER);            label[i].setBackground(Color.lightGray);            label[i].setBorder(BorderFactory.createEtchedBorder());            label[i].setOpaque(true);//setOpaqueIture)方法的目的是让组件变成不透明,这样我们在JLabel上所设置的颜色                                     // 才能显示出来。                }                JPanel panel1 = new JPanel(new GridLayout(1,1));        panel1.add(label[0]);                JPanel panel2 = new JPanel(new GridLayout(1,2));                JPanel panel3 = new JPanel(new GridLayout(1,2));        panel3.add(label[1]);        panel3.add(label[2]);                JPanel panel4 = new JPanel(new GridLayout(2,1));        panel4.add(label[3]);        panel4.add(label[4]);                panel2.add(panel3);        panel2.add(panel4);                contentPane.add(panel1);        contentPane.add(panel2);        f.pack();        f.show();        f.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                    System.exit(0);            }        });    }        public static void main(String[] arg)    {        new JPanel1();    }}

由上例可知,利用JPanel可以使版面的排列方式更生动,若没有JPanel的帮助,想直接由contentPane排列成如上例所示,便必须 借助复杂的GridBagLayout版面管理器了。 

原创粉丝点击