java基础—GUI概述


GUI

  《1》 Graphical User Interface(图形用户接口)。

  《2》用图形的方式,来显示计算机操作的界面,这样更方便更直观。

  《3》Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中


新建一个基本的窗体

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
public class GuiDemes {
        public static void main(String[] args)

         {// TODO Auto-generated method stub
                med();
        }
        private static void med() {
//创建窗体
        Frame f = new Frame("my java");
//对窗体进行基本设置
//设置显示窗体的大小

        f.setSize(500,400);
//设置显示窗体显示的位置
        f.setLocation(300, 200);
//设置布局方式
        f.setLayout(new FlowLayout());
//创建一个按钮对象
        Button b = new Button("按纽");
//将按纽添加到显示窗体中去
        f.add(b);
//调用方法使窗体显示在窗口中
        f.setVisible(true);
        }


}


事件监听机制

《1》事件源——就是awt包中的或者swing包中的那些图形界面组件

《2》事件——每一个事件源都有自己特有的对应事件和共性事件

《3》监听器——将可以触发某一个事件的动作都已经封装到了监听器中

《4》事件处理——这是我们要做的事情,对产生的动作进行处理


添加一个关闭功能

第一种方式:

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class GuiDemes {
        public static void main(String[] args) 
        {// TODO Auto-generated method stub
                med();
        }
        private static void med() 

        {
//创建窗体
                Frame f = new Frame("my java");
//对窗体进行基本设置
//设置显示窗体的大小

                f.setSize(500,400);
//设置显示窗体显示的位置
                f.setLocation(300, 200);
//设置布局方式
                f.setLayout(new FlowLayout());
//创建一个按钮对象
                Button b = new Button("按纽");
//将按纽添加到显示窗体中去
                f.add(b);
//调用自定义关闭对象来关闭显示窗体
                f.addWindowListener(new mywinclose());
//调用方法使窗体显示在窗口中
                f.setVisible(true);
                }
}
//自定义一个关闭类
 class mywinclose extends WindowAdapter
        {
        public void windowClosing(WindowEvent e)
        {
                System.out.println("666"+e.toString());
                System.exit(0);
        }
}

第二种实现方式:定义一个匿名内部类

        private static void med() 

        {
//创建窗体
                Frame f = new Frame("my java");
//对窗体进行基本设置
//设置显示窗体的大小
                f.setSize(500,400);
//设置显示窗体显示的位置
                f.setLocation(300, 200);
//设置布局方式
                f.setLayout(new FlowLayout());
//创建一个按钮对象
                Button b = new Button("按纽");
//将按纽添加到显示窗体中去
                f.add(b);
//创建一个匿名内部类来执行关闭功能
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                         }
                });

//调用方法使窗体显示在窗口中
                f.setVisible(true);
        }



简单优化代码

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class  FrameDemo
        {

//定义该组件中所需的引用
                private Frame f;
                private Button but;
                FrameDemo()
                {
                        init();
                }
                public void init()
                {
                        f = new Frame("my java");
//对窗体进行设置
                        f.setBounds(100,552,444,568);
                        f.setLayout(new FlowLayout());
                        but = new Button("my button");
//将按纽添加到窗体中去
                        f.add(but);
//加载下窗体事件
                        myEvent();
//显示窗体
                        f.setVisible(true);
        }
        private void myEvent()
        {
                        f.addWindowListener(new WindowAdapter()
                        {
                               public void windowClosing(WindowEvent e)
                                   {
                                        System.exit(0);
                                        }
                        });

             }

}
public class GuiDemes {

public static void main(String[] args) 
{// TODO Auto-generated method stub
med2();
}
private static void med2() {
// TODO Auto-generated method stub
FrameDemo f = new FrameDemo();
}

使窗体中的按纽具备关闭功能

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class  FrameDemo
{
//定义该组件中所需的引用
        private Frame f;
        private Button but;
        FrameDemo()
        {
                init();
        }
        public void init()
        {
                f = new Frame("my java");
//对窗体进行设置
                f.setBounds(100,552,444,568);
                f.setLayout(new FlowLayout());
                but = new Button("my button");
//将按纽添加到窗体中去
                f.add(but);
//加载下窗体事件
                myEvent();
//显示窗体
                f.setVisible(true);
        }
        private void myEvent()
        {
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });
//让按纽具备退出程序的功能
                but.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                System.out.println("按纽执行");
                                        System.exit(0);
                        }
                });


}
}
public class GuiDemes {
        public static void main(String[] args) 
        {// TODO Auto-generated method stub
                med2();
        }
        private static void med2() 
        {
                FrameDemo f = new FrameDemo();
        }

运行程序:

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

建立窗体中按钮活动事件:

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.A
ctionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2 
{
        public static void main(String[] args) 
        {
             ButtonDemo b = new ButtonDemo();
        }        
}
class ButtonDemo
{
        private Frame f;
        private Button but;
        ButtonDemo()
        {
                show();
        }
        private void show() 
        {
// TODO Auto-generated method stub
        f= new Frame("myjava");
//设置窗体属性
        f.setBounds(200,200, 200, 200);
        f.setLayout(new FlowLayout());
//设置一个按纽,并将其添加到窗体中去
        but = new Button("mybutton");
        f.add(but);
//调用自定义事件监听机制
        myEvent();
//设置在窗口中显示窗体
        f.setVisible(true);
        }
        private void myEvent() {
//建立窗体中按钮活动事件
        but.addActionListener(new ActionListener()
        {
                public void actionPerformed(ActionEvent e)
                {
                        System.out.println("action ok ");
                }
        });

//建立关闭按钮关闭窗体事件
         f.addWindowListener(new WindowAdapter()
        {
                public void  windowClosing(WindowEvent e)
                {
                           System.exit(0);
                           System.out.println("窗体关闭按钮执行");
                }
        });
}
}

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

向窗体中的按纽添加鼠标单击监听


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2 
{
        public static void main(String[] args)
        {
             ButtonDemo b = new ButtonDemo();
        }
}
class ButtonDemo
{
        private Frame f;
        private Button but;
        ButtonDemo()
        {
                show();
        }
        private void show() 
        {
                f= new Frame("myjava");
//设置窗体属性
                f.setBounds(200,200, 200, 200);
                f.setLayout(new FlowLayout());
//设置一个按纽,并将其添加到窗体中去
                but = new Button("mybutton");
                f.add(but);
//调用自定义事件监听机制
                myEvent();
//设置在窗口中显示窗体
                f.setVisible(true);
        }
        private void myEvent() 
        {
//建立窗体中按钮鼠标单击活动事件
                but.addMouseListener(new MouseAdapter()
                {
                        public void mouseEntered(MouseEvent e)
                        {
                                System.out.println("鼠标移动到了按纽上");
                        }
                        public void mouseClicked(MouseEvent e)
                        {
                        //方法getClickCount 是获取鼠标单击的次数的
                                if(e.getClickCount()==1)
                                    {
                                         System.out.println("鼠标单击了");
                                    }
                                if(e.getClickCount()==2)
                                        {
                                        System.out.println("鼠标双击了");
                                        }
                        }
                });

//建立关闭按钮关闭窗体事件
                f.addWindowListener(new WindowAdapter()
                {
                        public void  windowClosing(WindowEvent e)
                        {
                           System.out.println("窗体关闭按钮执行");
                           System.exit(0);
                        }
                });
        }
}
运行程序后:显示出窗体,将鼠标移动到窗体的按纽上进行单击和双击测试
java基础—GUI概述_第1张图片



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

向窗体中的按钮添加键盘按键监听机制


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2 
{
        public static void main(String[] args) 
        {
             ButtonDemo b = new ButtonDemo();
        }
}
class ButtonDemo
{
        private Frame f;
        private Button but;
        ButtonDemo()
        {
                show();
        }
        private void show() 
        {
// TODO Auto-generated method stub
                f= new Frame("myjava");
//设置窗体属性
                f.setBounds(200,200, 200, 200);
                f.setLayout(new FlowLayout());
//设置一个按纽,并将其添加到窗体中去
                but = new Button("mybutton");
                f.add(but);
//调用自定义事件监听机制
                myEvent();
        //设置在窗口中显示窗体
                f.setVisible(true);
        }
        private void myEvent() 
        {
//建立窗体中按钮键盘点击活动事件
                but.addKeyListener(new KeyAdapter()
                 {
                        public void keyPressed(KeyEvent e)
                        {
//设置esc键退出窗体功能
                                if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
                                {
                                   System.out.println("键盘按银退出");
                                   System.exit(0);
                                        }
                          System.out.println("按键为"+e.getKeyChar());
                }
        });




//建立关闭按钮关闭窗体事件
                f.addWindowListener(new WindowAdapter()
                {
                        public void  windowClosing(WindowEvent e)
                        {
                           System.out.println("窗体关闭按钮执行");
                           System.exit(0);
                        }
                });
        }
}

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

向显示窗体中添加一个文本方框


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2 
{
        public static void main(String[] args) 
        {
             ButtonDemo b = new ButtonDemo();
        }
}
class ButtonDemo
{
        private Frame f;
        private Button but;
        private TextField tx;
        ButtonDemo()
        {
                show();
        }
        private void show() 
        {
// TODO Auto-generated method stub
                f= new Frame("myjava");
//设置窗体属性
                f.setBounds(200,200, 200, 200);
                f.setLayout(new FlowLayout());
//新建一个文本方框,并将其添加到显示窗体中去
                tx = new TextField(20);
                f.add(tx);

//设置一个按纽,并将其添加到窗体中去
                but = new Button("mybutton");
                f.add(but);
//调用自定义事件监听机制
                myEvent();
//设置在窗口中显示窗体
                f.setVisible(true);
        }
        private void myEvent() 
        {
//添加一个文本监听事件
                tx.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent e)
                        {
//设定输入文字的限定,如果输入的数据不合格,则给出相应提示,
                                int code = e.getKeyCode();
                                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
                                 {
                                        System.out.println("数据不合格");
//调用方法,只要按键不合格,那么对应的值就不会输入到文本框中去
                                        e.consume();
                                        }
                        }
                });

//建立关闭按钮关闭窗体事件
                f.addWindowListener(new WindowAdapter()
                {
                        public void  windowClosing(WindowEvent e)
                        {
                           System.out.println("窗体关闭按钮执行");
                           System.exit(0);
                        }
                });
        }
}
运行程序后;向显示窗体中的文本方框中输入
java基础—GUI概述_第2张图片


练习
在文本框中输入目录,点击“转到”按钮,将该目录中的文件与文件夹名称列在下面的文本区域中去




import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class WindowDemo1 
{
        public static void main(String[] args) 
        {
                MyWindowDemo m = new MyWindowDemo();
        }
}
class MyWindowDemo
{
        private Frame f;
        private Button but;
        private TextField t1;
        private TextArea t2;
        MyWindowDemo()
        {
                init();
         }
        public void init()
        {
//新建一个窗体并设置窗体的属性
                f= new Frame("myjava");
                f.setBounds(200,200,500,400);
                f.setLayout(new FlowLayout());
//新建一个提示按钮
                but = new Button("转到");
                t1=new TextField(40);
                t2 = new TextArea(20,60);
                f.add(t1);
                f.add(but);
                f.add(t2);
//调用自定义监听机制
                myEvent();
//调用方法使窗体在窗口中显示
                f.setVisible(true);
        }
        private void myEvent() 
        {
// TODO Auto-generated method stub
//添加一个窗口窗体活动事件,实现关闭按纽点击关闭窗体
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.out.println("窗体关闭按钮关闭");
                                System.exit(0);
        
                        }
                });
//添加一个按钮监听事件
                but.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                String dirPath= t1.getText();
//将获取的文件路径封装对象
                                File dir = new File(dirPath);
//判断文件目录是否存在,如果不存在,则执行些代码块,给出相应提示
                                if(!dir.exists())
                                        t2.setText("目录文件不存在,请重新输入");
//如果文件目录存在,则执行下面的操作
                                if(dir.exists()&&dir.isDirectory())
                                {
                                        String[] names = dir.list();
                                        for(String s :names)
                                        {
                                                t2.append(s+"\r\n");

                                        }
                                }
//清空输入框
                                 t1.setText("");
                        }
                } );
        }
}
运行程序,并在文本框中输入相应的目录路径

java基础—GUI概述_第3张图片


java基础—GUI概述_第4张图片
加入对话框Dialog



import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class WindowDemo1 
{
        public static void main(String[] args) 
        {
                MyWindowDemo m = new MyWindowDemo();
        }
}
class MyWindowDemo
{
        private Frame f;
        private Button but;
        private TextField t1;
        private TextArea t2;
        private Dialog d ;
        private Label lab;
        private Button okbut;
        MyWindowDemo()
        {
                init();
        }
        public void init()
        {
//新建一个窗体并设置窗体的属性
                f= new Frame("myjava");
                f.setBounds(200,200,500,400);
                f.setLayout(new FlowLayout());
//新建一个提示按钮
                but = new Button("转到");
                t1=new TextField(40);
                t2 = new TextArea(20,60);
                f.add(t1);
                f.add(but);
                f.add(t2);
//创建一个显示窗口
                d = new Dialog(f,"提示信息",true);
//设置显示窗口
                d.setBounds(200, 200,400, 400);
                d.setLayout(new FlowLayout());
                lab = new Label();
                okbut = new Button("确定");

                d.add(lab);
                d.add(okbut);
                //调用自定义监听机制
                myEvent();
//调用方法使窗体在窗口中显示
                f.setVisible(true);
        }

        public void myEvent() 
        {
//添加一个文本框内容按键Enter输入
                t1.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent e)
                        {
                                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                                        show();
                        }
                });
//添加点击按纽退出提示窗口监听事件
                okbut.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                d.setVisible(false);
                        }
                });
//添加点击Enter键 退出提示窗口
                okbut.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent e)
                        {
                                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                                        d.setVisible(false);
                        }
                });
// TODO Auto-generated method stub
//添加d窗口的活动监听事件
                d.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                d.setVisible(false);
                        }
                });
//添加一个窗口窗体活动事件,实现关闭按纽点击关闭窗体
                f.addWindowListener(new WindowAdapter()
                        {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });
//添加一个按钮监听事件
                but.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                show();
                        }
                });
}

        public  void show() 
        {
                String dirPath= t1.getText();
//将获取的文件路径封装对象
                File dir = new File(dirPath);

//如果文件目录存在,则执行下面的操作
                if(dir.exists()&&dir.isDirectory())
                {
                        String[] names = dir.list();
                        for(String s :names)
                        {
                                t2.append(s+"\r\n");

                        }
                }
                else
                {
                        String info = "输入的信息"+dirPath+"不符合要求";
                           lab.setText(info);
                          d.setVisible(true);
                }
 //清空输入框
          t1.setText("");

        }
}


向对话框中添加菜单功能


import java.awt.*;
import java.awt.event.*;
public class MenuDemo 
{
        public static void main(String[] args) 
        {
// TODO Auto-generated method stub


                MyMenu m = new MyMenu();
        }
}
class MyMenu
{
        private Frame f;
        private MenuBar mb;
        private Menu m,subMenu;
        private MenuItem closeItem,subItem;
        MyMenu()
        {
                init();
        }
        public void init()
        {
                f = new Frame("myjava");
                f.setBounds(200,200,200,200);
                f.setLayout(new FlowLayout());

                mb = new MenuBar();
                m  = new Menu("文件");
                subMenu = new Menu("子菜单");

                subItem = new MenuItem("子条目");

                closeItem = new MenuItem("退出");

                subMenu.add(subItem);
                m.add(subMenu);
                m.add(closeItem);
                mb.add(m);
                f.setMenuBar(mb);
                myEvent();
                f.setVisible(true);
        }
        private void myEvent()
         {

                closeItem.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                System.exit(0);
                        }
                });
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                         {
                                System.exit(0);
                        }
                });



        }
}


















你可能感兴趣的:(java基础—GUI概述)