Java的图形界面编程(一)

来源:互联网 发布:淘宝全屏固定背景代码 编辑:程序博客网 时间:2024/06/05 19:45
 

Awt图形界面编程

---------------------------------------------------------------------------

不讲太多理论,只把我怎么弄的步骤记录下来,因为是自己的总结嘛~~理论自己去看书。

---------------------------------------------------------------------------

Java的图形界面编程是通过java的API,委托给当前的操作系统进行处理,使之具有一次编译,四处运行的特性。因此,即使是相同的代码,在不同平台下运行出来的结果也是不尽相同的。

----------------------------------------------------------------------------

要弄出一个界面的东东来,要导入java.awt包和java.awt.event包,后者是对事件的处理,例如单击鼠标,点击按钮,键盘响应等等。

----------------------------------------------------------------------------

大体的步骤如下,首先我们要弄一个叫做Frame的东东,这是一个顶层窗口,我们再向里面放入其他的东西,放入的可以是组件(如按钮button)也可以是窗口(容器)。

Frame f;

f=new Frame("窗口名");

f.setSize(600, 400);   //指定大小

f.setLocation(200,200);  //指定位置,相对屏幕左上角的点

f.setBackground(Color.ORANGE);   //背景色

f.setLayout(new GridLayout(2,2)); //似乎只能指定行数,不能指定列数

然后呢,我们可以向这个窗口加入很多的Panel,Panel是一种容器,里面又可以放很多的东西。

-----------------------------------------------------

另,还需要弄入一个事件委托器的东东,什么意思捏?比如说,我们点Button,拖鼠标,按键盘,需要一个东西来进行响应,事件委托器就是这么个东西。

例如顶层窗口的事件委托器,需要实现WindowListener接口,该接口内有7个方法,它有一个实现类,WindowAdapter,从该类继承的类,只需重写需要的方法,不需重写所有的方法。例如后面的代码,我就重写了一个类来做相应器,继承自WindowAdapter,重写了windowClosing()方法,即窗口关闭事件响应。为什么把它单独写成一个例呢,因为我认为这样可以更容易地拓展代码。

------------------------------------------------------

另有一个按钮事件响应委托器,其接口是ActionListener,它没有实现类,因为只有一个方法 void actionPerformed(ActionEvent e),就是按钮以后要做什么。

-------------------------------------------------------

本文附带的代码里有两个响应事件

1.点击一个按钮以后,按钮的标签文字改变,我加入了一个计数器i,因为我猜测是每点击一次调用一次void actionPerformed(ActionEvent e)方法,因此我用if else语句和i的自加成功实现了每点一次出现不同的文字标签

2.点击CardLayout布局下的按钮,翻到下一张牌~

-----------------------------------------------------

窗口的布局要用到布局管理器,通常我们在创建一个容器的时候需要导入一个布局管理器来管理各组件的布局,常用的布局管理器有

                     1.BorderLayout,分东南西北中,中比较大

                     2.FlowLayout,顺序摆放

                     3.GridLayout,网格状

                     4.CardLayout,卡片状,可以实现翻牌功能~~

                     5.GridBagLayout,比较复杂的一类,本文不介绍

用setLayout(),来设置布局管理器。

------------------------------------------------------------------------------------------------

最后要提到一点,因为代码里有用到“在一个方法中写一个匿名内部类的时候,如果这个匿名内部类需要访问方法中的局部变量,那么前提是该局部变量必须设置为final”。

-------------------------------------------------------------------------------------------------

不罗嗦了,看代码,有注释,很有用。我把构建一个窗口写成了一个类,非常的方便就可以加很多的Panel到这个窗口里,因为每加一个Panel只要调用一次方法。

-------------------------------------------------------------------------------------------------

 代码太长。。。另做一篇发表算了。。