zoukankan      html  css  js  c++  java
  • 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);
    
        }
    
    }
  • 相关阅读:
    固定表头的table
    Object.assign()方法
    一个命令解决linux重启nginx就丢失pid文件问题
    js-xlsx 一个实用的js 导出列表插件
    SparkSQL执行时参数优化
    HSQL转化为MR过程
    简单写下提交sql-map-shuffle-reduce的过程
    order by/sort by/distribute by /cluster by 的区分
    hive中如何控制mapper的数量
    hive 窗口和分析函数功能
  • 原文地址:https://www.cnblogs.com/blueskylcc/p/7234935.html
Copyright © 2011-2022 走看看