首页 >  JAVA频道 > JAVA相关 > 

java—Swing程序

java—Swing程序

作者:elc 来源: 时间:2017-05-12 访问次数:1803
开发第一个Swing程序

14.1 开发第一个Swing程序

【范例】示例代码是一个简单的Swing程序。

示例代码:

01import javax.swing.*;//导入Swing包

02//继承JFrame类

03public class Swing1 extends JFrame

04{

05//定义构造器

06public Swing1()

07{

08this.setLayout(null);//设置布局管理器

09JLabel jl=new JLabel();//定义一个标签

10jl.setText("第一个Swing程序");//设置显示的文字

11jl.setBounds(50,50,400,50);//设置标签的大小和位置

12this.add(jl);//将标签放到窗口中

13this.setBounds(300,250,500,200);//设置窗口的大小和位置

14this.setVisible(true);//设置窗口是可见的

15}

16public static void main(String args[])

17{

18Swing1 s=new Swing1();

19}

20}

第一次看到该程序可能会觉得很复杂,其实其中都是很基础的内容,在以后的Swing程序中也会重复使用。在该程序中,首先要导入Swing包,然后继承该包中的JFrame类,使用该类才能使运行结果出现界面的形式。在程序中需要定义一个构造器,在构造器中首先要设置布局管理器,该程序没有使用布局管理器,布局管理器的知识会在后面用一章的内容来进行讲解。然后就是定义了一个用于显示文字的标签。在最后还需要设置窗口的大小和位置,以及可见性。

从第一个Swing程序可以看出,运行结果不再是以前在黑屏中显示信息,而是在界面中显示信息。这里的信息不只包括文字信息,也包括以后将要学到的一些组件信息。

14.2 JFrame窗口类

在Swing程序中,窗口是一个容器,在该容器中可以放其他一些组件。学习JFrame窗口类是学习其他组件的基础。在Swing程序中创建窗口可以使用继承JFrame类来完成。

14.2.1 JFrame窗口类简介

在开发的Swing程序中,通常是通过继承JFrame窗口类来实现窗口的。在该类中具有很多很有用的方法,包括定义窗口标题、标框,以及窗口的大小和位置。在介绍这些方法之前,先来介绍一下JFrame窗口类的构造器。JFrame窗口类具有四种构造器。

最常用的JFrame窗口类的构造器是无参构造器,使用该构造器将创建一个初始不可见的新窗体。除此之外还有具有一个String类参数的构造器,使用该构造器能够在初始时就创建一个具有标题的新窗体。还有两种需要给出图形配置参数的构造器,这两种构造器在本书中不进行介绍。

创建新窗口后,就可以通过JFrame窗口类的方法来设置新窗口。首先使用无参构造器创建的是一个不可见的新窗体,所以要使用方法来将窗体设置为可见的形式。在JFrame窗口类中定义了一个setVisible方法来设置窗口的可见性,该方法具有一个布尔型参数,true表示可见,false表示不可见。将初始状态下的窗口设置为不可见是有原因的,因为有很多对窗口的操作需要在窗口不可见的状态下执行,从而setVisible方法通过在程序的最后执行。

在JFrame窗口类中有个setTitle方法,该方法需要一个字符型参数。使用setTitle方法可以设置窗口的名称;还有一个setBounds方法,该方法具有4个参数,前两个参数分别表示窗口位置的横坐标和纵坐标,后两个参数分别表示窗口大小的宽度和高度。JFrame窗口类最重要的方法就是add方法,使用该方法可以将组件添加到窗口中。这些都是比较常用的JFrame窗口类的方法。

14.2.2 创建简单窗体

通过前面对JFrame窗口类的学习,可以来创建一个简单的窗体。创建窗体有两种方法,先来介绍第一种方法,可以直接使用JFrame窗口类的构造器来创建一个简单的窗体。

【范例】示例代码是一个直接使用JFrame窗口类创建简单窗体的程序。

示例代码

01import javax.swing.*;//导入Swing包

02public class Swing2

03{

04public static void main(String args[])

05{

06JFrame jf=new JFrame();//创建JFrame类构造器

07jf.setTitle("直接使用JFrame窗口类");//设置窗口的名称

08jf.setBounds(300,250,300,200);//设置窗口的大小和位置

09jf.setVisible(true);//设置窗口可见性

10}

11}

在本程序中直接使用JFrame窗口类来创建一个窗体。首先创建一个JFrame类对象,然后调用JFrame类中的方法。在本程序中使用setTitle方法来设置窗口的名称,使用setBounds方法来设置窗口的大小和位置,使用setVisible方法来设置窗口的可见性。这种方法只是创建一个简单窗口时需要的,如果创建一个复杂的窗口,使用这种方法就会使程序变的非常复杂难理解。

14.2.3 设置窗体

还有一些设置窗体的方法。例如setResizable方法,使用该方法可以设置创建的窗口是否可以调整大小。默认状态下窗体是能够调整大小的,也就是setResizable方法的默认值为true。

注意:默认状态下窗体是能够调整大小的,也就是setResizable方法的默认值为true。

【范例】示例代码是一个设置窗体不能被调整大小的程序。

示例代码

01import javax.swing.*;//导入Swing包

02//继承JFrame类

03public class Swing4 extends JFrame

04{

05//定义构造器

06public Swing4()

07{

08this.setTitle("通过继承创建窗口");//设置窗口标题

09this.setBounds(300,250,300,200);//设置窗口的大小和位置

10this.setResizable(false);//设置窗口不能被调整大小

11this.setVisible(true);//设置窗口是可见的

12}

13public static void main(String args[])

14{

15Swing4 s=new Swing4();

16}

17}

有些人认为该结果是和上面程序的运行结果图一样的,其实不然。该运行结果中的窗体是不能最大化的,这主要是由于在程序中使用setResizable方法的参数为false,使得窗口不能调整大小,从而也就使窗口不能最大化。如果试图通过鼠标来调整大小,也是不能成功的。

在JFrame窗口类中还有一个很重要的方法,那就是setDefaultCloseOperation方法。使用该方法可以设置当单击关闭按钮关闭窗口时所执行的动作。这里的动作包括4种情况,分别对应着4个常量。

DO_NOTHING_ON_CLOSE 不执行任何动作

DISPOSE_ON_CLOSE 释放窗体对象

HIDE_ON_CLOSE 隐藏窗体

EXIT_ON_CLOSE 退出JVM

提示:如果不使用setDefaultCloseOperation方法进行设置,默认值为HIDE_ON_CLOSE,也就是在默认情况下单击关闭按钮将会使窗口隐藏。

14.3 JPanel面板类

在面讲解的JFrame窗口类是一个容器类,从本小节开始来讲解一些控件。首先要讲解的就是JPanel面板类。面板可以说是控件,但它同样是一种容器,只不过它不是顶层容器。所以在本节中就要先了解一下什么是容器,然后再介绍JPanel面板类。

14.3.1 容器介绍

Swing中的控件可以分为三类,顶层容器、非顶层容器和普通控件。在前面介绍的JFrame窗口类就是一个顶层容器。顶层容器是一种可以直接显示在系统桌面上的控件,其他控件必须直接或者间接的借助顶层容器进行显示。顶层容器除了包括JFrame窗口类外,还包括JWindow和JDialog等不常用的类。

在本节中将介绍的JPanel面板类是一个非顶级容器,非顶级容器是具有两面性的。非顶级容器是要放到顶级容器中使用的,对于顶级容器来说,非顶级容器是一般控件。在非顶级容器中还可以添加控件,对于这些控件来看,非顶级容器就是一个容器。

普通控件在控件中占大部分,使用这些控件可以实现特定的功能,但它们不具有容器的作用,它们只能放在容器中进行显示。普通控件包括按钮、文本框等很多控件。

14.3.2 JPanel面板类简介

JPanel面板类是一个非顶级容器,使用JPanel面板类可以搭建一个子界面。JPanel面板类同样具有四种构造器,最常用的仍然是无参构造器。使用有参构造器可以在初始时设置面板采用什么布局管理器和是否使用双缓冲。

JPanel面板类本身没有特殊功能,它的作用就是作为非顶级容器来添加普通控件,搭建子界面。所以JPanel面板类的方法也是很少很简单的。首先JPanel面板类具有一个添加控件的add方法,使用该方法能够将普通控件添加到面板中。getHeight方法和getWidth方法分别是返回当前面板的高度和宽度。

提示:JPanel面板类还有一个setToolTipText方法,该方法具有一个字符串参数,该方法的作用主要是当鼠标指针停留在面板上时显示文本,字符串内容就是要显示的内容。

14.3.3 创建面板

面板必须添加到窗口中,而面板中还可以添加普通的控件。在本节中就来学习如何创建面板,和如何进行添加操作。

【范例】示例代码是一个创建面板的程序。

示例代码

01import javax.swing.*;//导入Swing包

02//继承JFrame类

03public class Swing7 extends JFrame

04{

05JPanel jp=new JPanel();//创建一个面板

06JButton jb=new JButton("按钮");//创建一个按钮

07//定义构造器

08public Swing7()

09{

10this.setTitle("创建面板");//设置窗口名称

11jp.add(jb);//将按钮添加到面板中

12this.add(jp);//将面板添加到窗口中

13this.setBounds(300,250,300,200);//设置窗口的大小和位置