JPanel的使用

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版面管理器了。 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java的JPanel使用GridBagConstraints布局管理器可以实现灵活的布局。GridBagConstraints是一个类,它定义了在网格布局中使用的各种约束条件。下面是在JPanel使用GridBagConstraints的步骤: 1. 创建GridBagLayout对象 ``` GridBagLayout gridbag = new GridBagLayout(); panel.setLayout(gridbag); ``` 2. 创建GridBagConstraints对象 ``` GridBagConstraints constraints = new GridBagConstraints(); ``` 3. 设置约束条件 ``` constraints.gridx = 0; //组件所在列 constraints.gridy = 0; //组件所在行 constraints.gridwidth = 1; //组件宽度,占用列数 constraints.gridheight = 1; //组件高度,占用行数 constraints.weightx = 1; //组件在水平方向上的比重 constraints.weighty = 1; //组件在垂直方向上的比重 constraints.fill = GridBagConstraints.BOTH; //组件的填充方式 constraints.anchor = GridBagConstraints.CENTER; //组件的对齐方式 ``` 4. 添加组件 ``` panel.add(component, constraints); ``` 其中,component为要添加的组件,constraints为设置的约束条件。 示例代码: ``` JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 0; JLabel label1 = new JLabel("Label 1"); panel.add(label1, constraints); constraints.gridx = 1; JLabel label2 = new JLabel("Label 2"); panel.add(label2, constraints); constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 2; constraints.fill = GridBagConstraints.HORIZONTAL; JTextField textField = new JTextField(); panel.add(textField, constraints); ``` 这段代码将在JPanel中创建两个标签和一个文本框,并使用GridBagConstraints进行布局。标签1在第一行第一列,标签2在第一行第二列,文本框在第二行两列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值