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概述_自定义







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


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




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概述_java_02







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


java基础—GUI概述_关闭按钮_03






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概述_关闭按钮_04




java基础—GUI概述_关闭按钮_05
加入对话框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概述_java_06