AWT的基础知识-1

    技术2024-12-08  19

    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)