• 02 Java图形化界面设计——中间容器(Jpanel)


    上一篇讲解了Jframe顶层容器,例子中生成了一个空的窗体,在实际编程过程中,一般很少将文本框、按钮等组件直接放在顶层容器中进行布局,大多数时候是通过布局管理器结合中间容器对组件进行布局设置。

    1、  将组件添加到JFrame中

    方式之一:

    frame.getContentPane().add(childComponent)

    用getContentPane()方法获得JFrame的内容面板,再对其加入组件,一般只使用该方式添加组件。

    方式之二:

    把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:

        Jpanel contentPane=new Jpanel( );

    ……//把其它组件添加到Jpanel中;

    frame.setContentPane(contentPane);

    注意:用setContentPane()方法不允许设置窗体布局,其只显示最后添加的组件,且该组件将布满整个窗口,而不管原先组件的大小设置,相当于只允许添加一次组件作为JFrame的内容面板。所以一般不实用该方法进行添加组件(可能是我不知道吧)。

    2、 JPanel的使用

             JPanel是Java图形化界面中最常使用的容器。

    实例1:在窗体中添加一个蓝色的面板

    // PanelDemo.java
    
    import javax.swing.*;
    
    import java.awt.*; //引入AWT包,因为要使用到颜色类
    
    class PanelDemo {
    
        public static void main(String[] args) throws Exception
    
        {
            JFrame f = new JFrame("第一个Java窗口");
    
            f.setSize(300, 200);
    
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            f.setVisible(true);
    
            f.setResizable(false);
    
            f.setLocationRelativeTo(null);
    
            f.setLayout(null); // 设置窗体布局为空布局
    
            JPanel p = new JPanel(); // 实例化一个面板
    
            // 设置面板背景色为蓝色,如果不引入AWT包,程序将出错,可以试试看
    
            p.setBackground(Color.BLUE);
    
            p.setSize(100, 100); // 设置面板对象大小
    
            f.getContentPane().add(p); // 将面板添加到窗体中
    
            // 如果使用下面添加面板的方法,面板将布满整个窗口,可以试试看
    
            // f. setContentPane(p);
    
        }
    
    }

    中间容器可以嵌套中间容器

    实例2:面板的嵌套

    import java.awt.*;
    
    import javax.swing.*;
    
    class TwoPanel extends JFrame {
    
        public TwoPanel(String title) {
    
            super(title);
    
        }
    
        public static void main(String args[]) {
    
            TwoPanel fr = new TwoPanel("Two Panel测试");
    
            JPanel pan1 = new JPanel();
    
            JPanel pan2 = new JPanel();
    
            fr.setLayout(null);
    
            fr.getContentPane().setBackground(Color.green); // 设置窗口的颜色
    
            fr.setSize(250, 250);
    
            pan1.setLayout(null); // 设置面板为空布局
    
            pan1.setBackground(Color.red);
    
            pan1.setSize(150, 150);
    
            pan2.setBackground(Color.yellow);
    
            pan2.setSize(50, 50);
    
            pan1.add(pan2); // 将面板pan2添加到pan1中
    
            // 将pan1添加到窗体中,因为pan2被添加到pan1中,所以pan1、pan2都被显示在窗体中
    
            fr.getContentPane().add(pan1);
    
            fr.setVisible(true);
    
            fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        }
    
    }
  • 相关阅读:
    USACO07FEB银牛派对
    求环总结
    NOIP2015信息传递(拓扑排序 / 并查集)
    APIO2012dispatching (左偏树)
    [编程题]山寨金闪闪 (面试题)
    【小米oj】简单直接全排列
    【小米oj】寻找归一数字
    【小米oj】dreamstart 的催促
    【小米oj】打羽毛球的小爱同学
    【小米oj】石头收藏家
  • 原文地址:https://www.cnblogs.com/blueskylcc/p/7234935.html
Copyright © 2020-2023  润新知