上一篇讲解了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);

    }

}

02 Java图形化界面设计——中间容器(Jpanel)的更多相关文章

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

    1.  将组件添加到JFrame中 方式之一: frame.getContentPane().add(childComponent) 用getContentPane()方法获得JFrame的内容面板, ...

  2. 转: 二十八、Java图形化界面设计——中间容器(Jpanel)

    http://blog.csdn.net/liujun13579/article/details/7762835 上一篇讲解了Jframe顶层容器,例子中生成了一个空的窗体,在实际编程过程中,一般很少 ...

  3. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  4. 二十七、Java图形化界面设计——容器(JFrame)

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

  5. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  6. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  7. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  8. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

  9. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

随机推荐

  1. 使用 ssh 从 Gerrit 获取 patch 信息

    使用命令行(ssh)对Gerrit进行查询, 官方地址:https://review.openstack.org/Documentation/cmd-query.html 程序例子 import os ...

  2. v - on

    1. v-on绑定:on:click点击事件,再触发方法里面的add()或del() 2. 详情查看官方文档:https://cn.vuejs.org/v2/api/#v-on <!DOCTYP ...

  3. mysql导入数据乱码的解决

    #mysql -uroot -p -hlocalhost --default-character-set=utf8; mysql>use db_name; mysql>source /ho ...

  4. PHP中is_*() 函数用法

    PHP中is_*() 函数用法 is_a - 如果对象属于该类或该类是此对象的父类则返回 TRUE is_array - 检测变量是否是数组 is_bool - 检测变量是否是布尔型 is_calla ...

  5. Win10注销在哪?怎么注销电脑

    进入Win10电脑桌面,同时按住键盘上的[Alt]+[F4]组合快捷键,可以快速呼出[关闭Windows]操作选项,在下面的"您希望计算机所什么"里选择[注销],然后点击底部的[确 ...

  6. 优秀运维人员20道必会iptables面试题(转载)

    (一)企业面试口试题 1.详述iptales工作流程以及规则过滤顺序? 2.iptables有几个表以及每个表有几个链? 3.iptables的几个表以及每个表对应链的作用,对应企业应用场景? 4.画 ...

  7. iNode协议再次分析

    iNode协议再次分析 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach删除相应部分 ...

  8. 基于Vue的数字输入框组件开发

    1.概述 Vue组件开发的API:props.events和slots 2.组件代码 github地址:https://github.com/MengFangui/VueInputNumber 效果: ...

  9. iOS_Xcode怎样准确定位到产生异常的出错代码

    当应用程序出现异常而导致崩溃时, 可能光标仅仅提示异常出如今主函数代码处,例如以下图所看到的: 这样的情况下.即使看了日志. 也可能仍不清楚详细是哪一句代码产生了异常. 因此,须要手动设置异常断点. ...

  10. 使用xml-rpc调试openerp模块中的函数

    运行openerp模块中的函数 有很多方式, 可以在视图中加个按钮然后点击它, 也可以在集成开发环境中强制执行它. 不过, 用python写个小脚本,xml-rpc调用直接执行它, 无疑是最简便的方法 ...