AWT的基础知识-1

1)  基本GUI界面

package GUI;

import java.awt.*;

public class TestFrame {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Frame f=new Frame("www.it315.org");//定义容器界面

       f.add(new Button("ok"));//添加按钮

       f.setSize(300, 300);//设置窗口的宽、高

       f.setVisible(true);//设置窗口为可视

       try {

           Thread.sleep(5000);//所有线程停5

       } catch (InterruptedException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

       //f.setVisible(false);

       f.dispose();//释放该界面

    }

 

}

2)AWT事件处理

事件处理机制

事件分类

事件监听器

事件适配器

灵活设计事件监听器类

用匿名内置类实现事件监听器

事件处理的多重应用

修改组件的默认事件处理方式

3)  事件监听器,完成窗口关闭功能

(此处省略若干行)

完成事件监听器的相关方法

public void windowClosing(WindowEvent arg0) {

       arg0.getWindow().setVisible(false);//获得窗口对象,使其隐藏

       ((Window)arg0.getComponent()).dispose();//释放窗口对象

       System.exit(0);//使程序停止运行

在组件中添加时间监听器:

f.addWindowListener(new MyWindowListener());//添加事件监听器

4)用事件适配器实现窗口的关闭

重写事件适配器中的方法:

package GUI;

 

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

 

public class YourWindowListener extends WindowAdapter {

    public void windowClosing(WindowEvent e)

    {

       e.getWindow().dispose();//释放窗口资源

       System.exit(0);//关闭程序

    }

}

把事件适配器添加到事件监听器中:

f.addWindowListener(new YourWindowListener());//添加事件监听器

5)处理按钮事件

package GUI;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class TestFrame implements ActionListener {

 

     Frame f=new Frame("www.it315.org");

     

     public void init(TestFrame tf)

     {

        Button button=new Button("关闭");

           button.addActionListener(tf);     

           f.add(button);

           f.setSize(300, 300);

           f.addWindowListener(new YourWindowListener());//添加事件监听器

           f.setVisible(true);

     }

     public void init()

     {

        Button button=new Button("关闭");

           button.addActionListener(this); //用当前对象,而不是新定义对象

           f.add(button);

           f.setSize(300, 300);

           f.addWindowListener(new YourWindowListener());//添加事件监听器

           f.setVisible(true);

     }

    public static void main(String[] args) {

       TestFrame t=new TestFrame();

       t.init();

 

    }

 

    public void actionPerformed(ActionEvent arg0) {

       f.dispose();

    }

 

}

6)内置类

package GUI;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class TestFrame  {

 

     Frame f=new Frame("www.it315.org");

     

     public void init(TestFrame tf)

     {

        Button button=new Button("关闭");

           button.addActionListener(new MyActionLinsener());      

           f.add(button);

           f.setSize(300, 300);

           f.addWindowListener(new YourWindowListener());//添加事件监听器

           f.setVisible(true);

     }

     public void init()

     {

        Button button=new Button("关闭");

           button.addActionListener(new MyActionLinsener());      

           f.add(button);

           f.setSize(300, 300);

           f.addWindowListener(new YourWindowListener());//添加事件监听器

           f.setVisible(true);

     }

    public static void main(String[] args) {

       TestFrame t=new TestFrame();

       t.init();

 

    }

   class MyActionLinsener implements ActionListener{//定义内置类

    public void actionPerformed(ActionEvent arg0) {

       f.dispose();

    }

   }

 

}

7)定义匿名类

package GUI;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class TestFrame  {

 

     Frame f=new Frame("www.it315.org");

     public void init()

     {

        Button button=new Button("关闭");

           button.addActionListener(new ActionListener(){//定义匿名类

 

              public void actionPerformed(ActionEvent arg0) {

                  f.dispose();

                 

              }

             

           });   

           f.add(button);

           f.setSize(300, 300);

           f.addWindowListener(new YourWindowListener());//添加事件监听器

           f.setVisible(true);

     }

    public static void main(String[] args) {

       TestFrame t=new TestFrame();

       t.init();

 

    }

 

}

8)事件处理的多重应用。

我的理解:

1-    按钮可以有按按钮的高级事件,也可以有按钮按下,按钮弹起的低级事件

2-    一个监听事件,可以被多个按钮调用,重复使用

3-    一个动作可以有多个事件来处理。

9)修改事件的默认事件处理方式。

编写一个按钮,鼠标移动到上边,按钮就会去别的地方。

按钮类:

package GUI;

 

import java.awt.*;

import java.awt.event.MouseEvent;

 

public class MyButton extends Button {

    private MyButton friend=null;//定义一个朋友按钮

    public MyButton(String title)//重写构造方法

    {

       super(title);

       this.enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);//修改默认设置,使鼠标移动事件有效

    }

    //重写该事件

    public void processMouseMotionEvent(MouseEvent e)

    {

       setVisible(false);//使当前按钮隐藏

       friend.setVisible(true);//使朋友按钮显示

    }

    public MyButton getFriend() {

       return friend;

    }

    public void setFriend(MyButton friend) {

       this.friend = friend;

    }

}

主程序:

package GUI;

import java.awt.*;

import java.awt.event.*;

public class TestMyButton extends Frame {//定义一个自己的窗口,继承窗口类

 

    public TestMyButton()//添加构造方法

    {

       addWindowListener(new WindowAdapter(){//注册窗口适配器

 

 

           public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法

              dispose();     //释放该窗口

              System.exit(0);//停止程序的运行

           }

 

       });

    }

    public static void main(String[] args) {

       System.out.println("starting TestMyButton..");

       TestMyButton mainFrame=new TestMyButton();//实例化定义的创库

       MyButton btn1=new MyButton("你来抓我呀");//实例化按钮

       MyButton btn2=new MyButton("你来抓我呀");

       btn1.setFriend(btn2);//关联这上边实例的两个按钮

       btn2.setFriend(btn1);

       mainFrame.add(btn1,"North");//设置按钮的位置

       mainFrame.add(btn2,"South");

       mainFrame.setSize(400, 400);//设置窗口的大小

       mainFrame.setTitle("TestMyButton");

       mainFrame.setVisible(true);

       btn2.setVisible(false);//先隐藏btn2

    }

 

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为什么需要GUI? 我们前面编写的程序命令行的,用户的体验度极差。 抽象窗口工具包(Abstract Window Tookit)是为java程序提供建立图形用户界面(Graphics User Interface GUI)的工具集。主要包含如下组件: 1. 用户界面组件 2. 事件处理模型 3. 图形图像工具(形状、颜色、字体) 4. 布局管理器 AWT的优势: 1. 最早的JAVA GUI包,内嵌到JDK中,无需引入其他类,功能稳定 2. AWT组件都是线程安全的 3. 界面编程基础. 学会AWT, 很容易去学swing/SWT等功能较强大的GUI组件. AWT的缺点: 1. 组件的创建完全依赖操作系统实现,导致不同的操作系统下出现不同的外观。 说白了,awt的组件是由操作系统绘制的,我们也说awt组件是重量级的组件。 这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers。也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形。由于不同操作系统的图形所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。 AWT并没有为GUI组件提供真正的实现,而是调用运行平台的GUI组件来创建和平台一致的对等体peers,因此程序中Textarea实际上是windows的多行文本域组件的对等体,具有和他相同的行为。所以,你右键单击textarea会出现菜单… 2. 线程安全导致运行速度慢 3. 为了保证程序的可移植性,AWT组件集遵循最大公约数原则,即AWT只拥有所有平台上都存在的组件的公有集合。有些常用的组件不支持,比如:表、树、进度条等。字体也只能支持4种。 为什么还需要学习AWT? 实际开发中使用AWT的情况非常少,但是我们仍然有必要学习AWT。主要原因如下: 1. Swing是在AWT基础上构建的,事件模型和一些支持类(形状、颜色、字体)都一样。掌握AWT有利于后面学习SWING. Eclipse不是swing开发的,是swt开发的。 2. 学习一下GUI编程。事实上,编程思路和其他语言类似
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值