详解如何使用Java编写图形化的窗口
窗口是gui编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在gui中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用。有以下三种窗口:
applet窗口:applet类管理这个窗口,当应用程序程序启动时,由系统创建和处理;
框架窗口(jframe):这是通常意义上的窗口,它支持窗口周边的框架、标题栏,以及最小化、最大化和关闭按钮;
一种无边框窗口(jwindow):没有标题栏,没有框架,只是一个空的矩形。
用swing中的jframe类或它的子类创建的对象就是jframe窗口。
jframe类的主要构造方法:
- jframe():创建无标题的窗口对象;
- jframe(string s):创建一个标题名是字符串s的窗口对象。
jframe类的其他常用方法:
- setbounds(int x,int y,int width,int height):参数x,y指定窗口出现在屏幕的位置;参数width,height指定窗口的宽度和高度。单位是像素。
- setsize(int width,int height):设置窗口的大小,参数width和height指定窗口的宽度和高度,单位是像素。
- setbackground(color c):以参数 c设置窗口的背景颜色。
- setvisible(boolean b):参数b设置窗口是可见或不可见。jframe默认是不可见的。
- pack():用紧凑方式显示窗口。如果不使用该方法,窗口初始出现时可能看不到窗口中的组件,当用户调整窗口的大小时,可能才能看到这些组件。
- settitle(string name):以参数name设置窗口的名字。
- gettitle():获取窗口的名字。
- setresiable(boolean m):设置当前窗口是否可调整大小(默认可调整大小)。
swing里的容器都可以添加组件,除了jpanel及其子类(japplet)之外,其他的swing容器不允许把组件直接加入。其他容器添加组件有两种方法:
一种是用getcontentpane()方法获得内容面板,再将组件加入。例如,例5.1程序中的代码:
mw.getcontentpane().add(button);
该代码的意义是获得容器的内容面板,并将按钮button添加到这个内容面板中。
另一种是建立一个jpanel对象的中间容器,把组件添加到这个容器中,再用setcontentpane()把这个容器置为内容面板。例如,代码:
jpanel contentpane = new jpanel(); … mw.setcontentpane(contentpane);
以上代码把contentpane置成内容面板。
【例】一个用jframe类创建窗口的java应用程序。窗口只有一个按钮。
import javax.swing.*; public class example5_1{ public static void main(string args[]){ jframe mw = new jframe(“我的第一个窗口”); mw.setsize(250,200); jbutton button = new jbutton(“我是一个按钮”); mw.getcontentpane().add(button); mw.setvisible(true); } }
用swing 编写gui程序时,通常不直接用jframe创建窗口对象,而用jframe派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容等。
【例】定义jframe派生的子类mywindowdemo创建jframe窗口。类mywindowdemo的构造方法有五个参数:窗口的标题名,加放窗口的组件,窗口的背景颜色以及窗口的高度和宽度。在主方法中,利用类mywindowdemo创建两个类似的窗口。
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class example5_2{ public static mywindowdemo mw1; public static mywindowdemo mw2; public static void main(string args[]){ jbutton static butt1 = new jbutton(“我是一个按钮”); string name1 = “我的第一个窗口”; string name2 = “我的第二个窗口”; mw1 = new mywindowdemo(name1,butt1,color.blue,350,450); mw1.setvisible(true); jbutton butt2 = new jbutton(“我是另一个按钮”); mw2 = new mywindowdemo(name2,butt2,color.magenta,300,400); mw2.setvisible(true); } } class mywindowdemo extends jframe{ public mywindowdemo(string name,jbutton button,color c,int w,int h){ super(); settitle(name); setsize(w,h); container con = getcontentpane(); con.add(button); con.setbackground(c); } }
显示颜色由java.awt包的color类管理,在color类中预定了一些常用的颜色,参见表11-3。jframe类的部分常用方法参见下表。
color 类中定义的常用颜色
jframe 类的部分常用方法
上一篇: Android软键盘弹出时的界面控制方法
下一篇: Android设计模式系列之单例模式