在Swing中,任何其他组件都必须位于一个顶层容器中。JFrame 窗口和 JPanel 面板是常用的顶层容器,本节详细介绍这两个容器的使用方法。
JFrame 用来设计类似于 Windows 系统中窗口形式的界面。JFrame 是 Swing 组件的顶层容器,该类继承了 AWT 的 Frame 类,支持 Swing 体系结构的高级 GUI 属性。
JFrame 类的常用构造方法如下所示。
当创建一个 JFrame 类的实例化对象后,其他组件并不能够直接放到容器上面,需要将组件添加至内容窗格,而不是直接添加至 JFrame 对象。示例代码如下:
使用 JFrame 类创建 GUI 界面时,其组件的布局组织示意如图 1 所示。
在图 1 中显示有“大家好”的 Swing 组件需要放到内容窗格的上面,内容窗格再放到 JFrame 顶层容器的上面。菜单栏可以直接放到顶层容器 JFrame 上,而不通过内容窗格。内容窗格是一个透明的没有边框的中间容器。
JFrame 类中的常用方法如表 1 所示。
在了解窗口组件 JFrame 的语法之后,下面使用 JFrame 类创建一个窗口。要求设置窗口的标题为“Java第一个 GUI 程序”,并向窗口内添加“这是使用 JFrame 类创建的窗口”文本。具体实现代码如下:
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
public class JFrameDemo extends JFrame
{
public JFrameDemo()
{
setTitle("Java 第一个 GUI 程序"); //设置显示窗口标题
setSize(400,200); //设置窗口显示尺寸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //置窗口是否可以关闭
JLabel jl=new JLabel("这是使用JFrame类创建的窗口"); //创建一个标签
Container c=getContentPane(); //获取当前窗口的内容窗格
c.add(jl); //将标签组件添加到内容窗格上
setVisible(true); //设置窗口是否可见
}
public static void main(String[] agrs)
{
new JFrameDemo(); //创建一个实例化对象
}
}
上述代码创建的 JFrameDemo 类继承了 JFrame 类,因此 JFrameDemo 类可以直接使用 JFrame 类的方法。setTitle() 方法用来设置窗口标题,setDefaultCloseOperation() 方法用来设置响应方式,即当单击“关闭”按钮时退出该程序。
在构造方法中使用 JLabel 类创建一个标签对象 jl,其参数是标签的文本提示信息。JFrame 框架的 getContentPane() 方法获取了内容窗格对象,并使用 add() 方法将标签添加到内容窗格上。最后的 setVisible() 方法是从父类中继承的方法。
程序运行的窗口结果如图 2 所示。
//...忽略其他...
//居中显示
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
int frameWidth = 800;
int frameHeight = 400;
// frame.setSize(frameWidth, frameHeight);
frame.setBounds(screenWidth/2-(frameWidth/2), screenHeight/2-(frameHeight/2), frameWidth, frameHeight);
//...忽略其他...
JPanel 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。JPanel 类的构造方法如下。
JPanel 类的常用方法如表 2 所示。
编写一个使用 JPanel 组件的窗口程序。要求设置标题为“Java的第二个GUI程序”,然后向窗口中添加一个面板,并设置面板上显示的文本为“这是放在JPanel上的标签”,设置面板背景颜色为白色。具体实现代码如下
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
public class JPanelDemo
{
public static void main(String[] agrs)
{
JFrame jf=new JFrame("Java第二个GUI程序"); //创建一个JFrame对象
jf.setBounds(300, 100, 400, 200); //设置窗口大小和位置
JPanel jp=new JPanel(); //创建一个JPanel对象
JLabel jl=new JLabel("这是放在JPanel上的标签"); //创建一个标签
jp.setBackground(Color.white); //设置背景色
jp.add(jl); //将标签添加到面板
jf.add(jp); //将面板添加到窗口
jf.setVisible(true); //设置窗口可见
}
}
如上述代码,首先创建了一个 JFrame 对象,并设置其大小和位置,然后创建了一个 JPanel对象表示面板,调用 setBackground() 方法设置面板的背景色为白色,调用 add() 方法将标签添加到此面板。JFrame 类的 add() 方法将 JPanel 面板添加到 JFmme 窗口中。最后调用 setVisible() 方法将窗口设置为可见。
运行程序,显示的窗口如图 3 所示。
http://blog.xqlee.com/article/2502261612213237.html