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

    }

}

最新文章

  1. CentOS6.5 vsftpd 配置
  2. js自定义对象
  3. Scrum会议7(Beta版本)
  4. SQLSERER给表加自增列
  5. 使用 Cocos2d-x 3.1.1 创建 Windows Phone 8 游戏开发环境
  6. python中精确输出JSON浮点数的方法
  7. php 相对路径中 及 绝对路径中 的一些问题
  8. (转)用JS判断ckeditor3.6版本编辑器内容为空的方法
  9. Canvas createRadialGradient API
  10. IT团队之非正式沟通
  11. JUnit5 安装与使用
  12. 【很好的分享】zookeeper系列
  13. python 推导式
  14. Toggle组件切换开关,控制开关图片显示与隐藏
  15. Go语言从入门到放弃(一) 变量/常量/函数
  16. 【转】SQLyog SSH 密钥登陆认证提示: No supported authentication methods available 解决方法
  17. 对象new和不new的理解
  18. mysql重要sql小记
  19. 10个实用的Django建议(转)
  20. JavsScript 之 求时间差

热门文章

  1. spock spring 集成测试框架搭建心得
  2. Joiner的用法
  3. python读取文件特定的行数
  4. JMeter 四:建立高级web测试计划
  5. Unity3D调用摄像头显示当前拍摄画面
  6. 算法笔记_080:蓝桥杯练习 队列操作(Java)
  7. recess----3.Controller如何和View关联
  8. Wireshark-配合tcpdump对Android(安卓)手机抓包
  9. SQL面试题: 数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列 ,当B列大于C列时选择B列否则选择C列 ,
  10. 动态规划初级 入门理解 C#代码