容器
java中的容器分为顶层容器、中间容器和特殊容器三大类。其中,顶层容器是GUI的基础,其他所有的组件都是直接或间接显示在顶层容器中的。在Swing中有3种顶层容器,分别是JFrame(框架窗口,即通常的窗口)、JDialog(对话框)、JApplet(用于设计嵌入在网页中的Java小程序)。中间容器是可以包含其他相应组件的容器,但是中间容器不能单独存在,必须依附于顶层容器。Java常见的中间容器有JFrame、JScrolPane等。还有一些特殊容器,如:JLayeredPane、JRootPane、JInternalFrame等。
1.JFrame
Java中所提供的JFrame类的实例就是一个顶层容器,是构造GUI的基础,其他组件必须添加到顶层容器中,以便和操作系统进行信息交互。JFrame常用的方法如下:
JFrame的常用方法
方法 | 说明 |
JFrame() | 创建一个没有标题的窗口 |
JFrame(String s) | 创建一个标题为s的窗口 |
Public void setBounds(int a,int b,int width,int hight) | 设置显示窗口的位置以及大小 |
Public void setSize(int width,int hight) | 设置窗口的大小 |
Public void setLocation(int x,int y) | 设置窗口的位置(默认位置为(0,0)) |
Public void setVisible(boolean b) | 设置窗口是否可见,默认false不可见 |
Public void setResizable(boolean b) | 设置窗口是否为可调整大小,默认为可调整 |
Public void Container getContentPane() | 获取顶层容器的内容面板 |
Public void void dispaly() | 撤销当前窗口,并且释放当前窗口使用的所有资源 |
Public void setExtendedState(int state) | 设置窗口的扩展状态 |
Public void setDefaultCloseOperation(int Operation) | 设置关闭窗口后的默认操作 |
其中,参数state取JFrame类中常量MAXIMIZED_HORIZ(水平方向最大化)/MAXIMIZED_VERT
(垂直方向最大化)/MAXIMIZED_BOTH(垂直和水平方向都最大化)。参数operation取JFrame类中的int型static常量DO_NOTHING_CLOSE(什么都不做)/HIDE_ON_CLOSE(隐藏当前窗口)/DIPOSE_ON_CLOSE(隐藏当前窗口,并释放所有资源)/EXIT_ON_CLOSE(结束窗口所在的应用程序)。
创建窗口一般有两种方式:第一种方式是直接定义JFrame类的对象创建一个窗口,第2种方式是创建类继承JFrame类新建一个窗口。
Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(content pane)上。
向JFrame中添加组件的两种方式之一如下:
(1)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:
Frame.getContentPane().add(childComponent);
(2)把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:Jpanel1 contentPane=new Jpane1();
//把其他组件添加到Jpanel中
Frame.setContentPane(contentPane);
具体例子:
package com.swing;import javax.swing.*;
public class container1 {
static final int WIDTH=300; //设置宽度
static final int HEIGHT=200; //设置长度
public static void main(String[] args)
{
JFrame jf=new JFrame("添加内容面板测试程序"); //建立顶层容器
jf.setSize(WIDTH,HEIGHT); //设置窗口的大小
j f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭窗口的操作
jf.setVisible(true); //设置窗口是否可见
JPanel contentpane=new JPanel(); //创建中间容器
jf.setContentPane(contentpane); //将中间容器依托在顶层容器内
JButton b1=new JButton("确定"); //创建一个基本组件
JButton b2=new JButton("取消"); //创建另一个基本组件
contentpane.add(b1); //将基本组件依附于中间容器中。
contentpane.add(b2); //将基本组件依附于中间容器中。
}
}
运行结果: