Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单



 * 创建图形化界面
 * 1.创建frame窗体
 * 2.对窗体进行基本设置
 *   比如大小、位置、布局
 * 3.定义组件
 * 4.将组件通过窗体的add方法添加到窗体
 * 5.让窗体显示,通过setVisible(true)

  1. import java.awt.*;  
  2. import java.awt.event.WindowAdapter;  
  3. import java.awt.event.WindowEvent;  
  4. import java.awt.event.WindowListener;  
  5.   
  6. public class AwtDemo {  
  7.   
  8.     public static void main(String[] args){  
  9.         Frame f=new Frame(“我的窗口”);//它默认的是边界布局  
  10.         f.setLocation(300, 300);//定点距左边的距离  
  11.         f.setSize(500, 400);  
  12.         f.setLayout(new FlowLayout());  
  13.         Button b=new Button(“按钮”);  
  14.         f.add(b);  
  15.           
  16.         //f.addWindowListener(new MyWin());  
  17.         //我们也可以写一个匿名内部类  
  18.         f.addWindowListener(new WindowAdapter() {  
  19.             public void windowClosing(WindowEvent e){  
  20.                 System.out.println(“关闭窗体”);  
  21.                 System.exit(0);  
  22.             }  
  23.             public void windowActivated(WindowEvent e){  
  24.                 System.out.println(“我要活动了”);  
  25.                   
  26.             }  
  27.             public void windowOpened(WindowEvent e){  
  28.                 System.out.println(“我被打开了”);  
  29.                   
  30.             }  
  31.         });  
  32.           
  33.         f.setVisible(true);  
  34.           
  35.     }  
  36. }  
  37.   
  38. /*  
  39. interface Lis{  
  40.     void close();  
  41. }  
  42. abstract class WinLis implements Lis{  
  43. //  复写接口中的方法,要用  
  44. //  某一个接口,必须复写  
  45. //  其中所有的方法,才能  
  46. //  建立对象,然后传递给函数,  
  47. //  用到abstract是因为这个里  
  48. //  面没有内容,如果调用的话  
  49. //  没有什么意义,所以抽象化了,  
  50. //  不让创建对象  
  51.     public void  close(){  
  52.           
  53.     }  
  54. }  
  55.   
  56. class MyWin implements WindowListener{  
  57.   
  58.     //复写7个方法,可是只用了其中一种方法  
  59.     //其他动作都没有用到,可是却必须复与。  
  60.       
  61.     @Override  
  62.     public void windowOpened(WindowEvent e) {  
  63.         // TODO Auto-generated method stub  
  64.           
  65.     }  
  66.   
  67.     @Override  
  68.     public void windowClosing(WindowEvent e) {  
  69.         // TODO Auto-generated method stub  
  70.           
  71.     }  
  72.   
  73.     @Override  
  74.     public void windowClosed(WindowEvent e) {  
  75.         // TODO Auto-generated method stub  
  76.           
  77.     }  
  78.   
  79.     @Override  
  80.     public void windowIconified(WindowEvent e) {  
  81.         // TODO Auto-generated method stub  
  82.           
  83.     }  
  84.   
  85.     @Override  
  86.     public void windowDeiconified(WindowEvent e) {  
  87.         // TODO Auto-generated method stub  
  88.           
  89.     }  
  90.   
  91.     @Override  
  92.     public void windowActivated(WindowEvent e) {  
  93.         // TODO Auto-generated method stub  
  94.           
  95.     }  
  96.   
  97.     @Override  
  98.     public void windowDeactivated(WindowEvent e) {  
  99.         // TODO Auto-generated method stub  
  100.           
  101.     }  
  102.     //  
  103. }  
  104. */  
  105. //因为WindowListener的子类WindowAdapter已结实现了WindowListener接口  
  106. //并已经覆盖了其中所有的方法,那么我只要继承自Windowadapter覆盖需要的方法即可  
  107. //在图形化界面有两个包必须导入,java.awt.*;还有一个是java.awt.event.*;  
  108. class MyWin extends WindowAdapter{  
  109.     public void windowClosing(WindowEvent e){  
  110.           
  111.         System.out.println(“关闭窗体”);  
  112.         System.exit(0);  
  113.     }  
  114. }  
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class AwtDemo {

    public static void main(String[] args){
        Frame f=new Frame("我的窗口");//它默认的是边界布局
        f.setLocation(300, 300);//定点距左边的距离
        f.setSize(500, 400);
        f.setLayout(new FlowLayout());
        Button b=new Button("按钮");
        f.add(b);

        //f.addWindowListener(new MyWin());
        //我们也可以写一个匿名内部类
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                System.out.println("关闭窗体");
                System.exit(0);
            }
            public void windowActivated(WindowEvent e){
                System.out.println("我要活动了");

            }
            public void windowOpened(WindowEvent e){
                System.out.println("我被打开了");

            }
        });

        f.setVisible(true);

    }
}

/*
interface Lis{
    void close();
}
abstract class WinLis implements Lis{
//  复写接口中的方法,要用
//  某一个接口,必须复写
//  其中所有的方法,才能
//  建立对象,然后传递给函数,
//  用到abstract是因为这个里
//  面没有内容,如果调用的话
//  没有什么意义,所以抽象化了,
//  不让创建对象
    public void  close(){

    }
}

class MyWin implements WindowListener{

    //复写7个方法,可是只用了其中一种方法
    //其他动作都没有用到,可是却必须复与。

    @Override
    public void windowOpened(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowClosing(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowClosed(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowIconified(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowActivated(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO Auto-generated method stub

    }
    //
}
*/
//因为WindowListener的子类WindowAdapter已结实现了WindowListener接口
//并已经覆盖了其中所有的方法,那么我只要继承自Windowadapter覆盖需要的方法即可
//在图形化界面有两个包必须导入,java.awt.*;还有一个是java.awt.event.*;
class MyWin extends WindowAdapter{
    public void windowClosing(WindowEvent e){

        System.out.println("关闭窗体");
        System.exit(0);
    }
}



图形界面之鼠标键盘点击事件:

  1. import java.awt.Button;  
  2. import java.awt.FlowLayout;  
  3. import java.awt.Frame;  
  4. import java.awt.TextField;  
  5. import java.awt.event.ActionEvent;  
  6. import java.awt.event.ActionListener;  
  7. import java.awt.event.KeyAdapter;  
  8. import java.awt.event.KeyEvent;  
  9. import java.awt.event.MouseAdapter;  
  10. import java.awt.event.MouseEvent;  
  11. import java.awt.event.WindowAdapter;  
  12. import java.awt.event.WindowEvent;  
  13.   
  14.   
  15. public class MouseAndKeyEvent {  
  16.   
  17.   
  18.     private Frame f;  
  19.     private Button but;  
  20.     private TextField tf;  
  21.     MouseAndKeyEvent(){  
  22.         init();  
  23.     }  
  24.     public void init(){  
  25.         f=new Frame(“我的窗口”);  
  26.         f.setBounds(300,100,600,500);  
  27.         but=new Button(“按钮”);  
  28.         tf=new TextField(10);//表示长度为10  
  29.         f.add(tf);  
  30.         f.add(but);  
  31.         myEvent();  
  32.         f.setLayout(new FlowLayout());  
  33.         f.setVisible(true);  
  34.           
  35.     }  
  36.       
  37.     public void myEvent(){  
  38.         f.addWindowListener(new WindowAdapter() {  
  39.               
  40.             public void windowClosing(WindowEvent e){  
  41.                 System.exit(0);  
  42.             }  
  43.       
  44.         });  
  45.         //在文本框里只能输入数字  
  46.         tf.addKeyListener(new KeyAdapter() {  
  47.             public void keyPressed(KeyEvent e){  
  48.                 int code=e.getKeyCode();  
  49.                 if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))  
  50.                     System.out.println(code+”..是不合法的数字”);  
  51.                     e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件  
  52.               
  53.             }  
  54.           
  55.         });  
  56.           
  57.           
  58.         //but添加一个键盘监听  
  59.         but.addKeyListener(new KeyAdapter(){  
  60.             public void keyPressed(KeyEvent e){  
  61.                 if(e.getKeyCode()==KeyEvent.VK_ENTER)  
  62.                     System.exit(0);  
  63.                 System.out.println(KeyEvent.getKeyText(e.getKeyCode())+”…”+e.getKeyCode());  
  64.                 //键盘的组合键  
  65.                 if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)  
  66.                     System.out.println(“Ctrl+Enter is run”);  
  67.               
  68.             }  
  69.         });  
  70.           
  71.         but.addActionListener(new ActionListener() {  
  72.               
  73.             @Override  
  74.             public void actionPerformed(ActionEvent e) {  
  75.                 System.out.println(“action ok”);  
  76.                   
  77.             }  
  78.         });  
  79.           
  80.         but.addMouseListener(new MouseAdapter() {  
  81.             private int count=1;  
  82.             private int clickCount=1;  
  83.             public void mouseEntered(MouseEvent e){  
  84.                 System.out.println(“鼠标进入到该组件”+count++);  
  85.             }  
  86.             public void mouseClicked(MouseEvent e){  
  87.                 System.out.println(“点击动作”+clickCount++);  
  88.             }  
  89.             public void mouseClicked2(MouseEvent e){  
  90.                 if(e.getClickCount()==2)  
  91.                     System.out.println(“双击动作”+clickCount++);  
  92.             }  
  93.         });  
  94.     }  
  95.       
  96.     public static void main(String []args){  
  97.         new MouseAndKeyEvent();  
  98.     }  
  99. }  
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class MouseAndKeyEvent {


    private Frame f;
    private Button but;
    private TextField tf;
    MouseAndKeyEvent(){
        init();
    }
    public void init(){
        f=new Frame("我的窗口");
        f.setBounds(300,100,600,500);
        but=new Button("按钮");
        tf=new TextField(10);//表示长度为10
        f.add(tf);
        f.add(but);
        myEvent();
        f.setLayout(new FlowLayout());
        f.setVisible(true);

    }

    public void myEvent(){
        f.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e){
                System.exit(0);
            }

        });
        //在文本框里只能输入数字
        tf.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e){
                int code=e.getKeyCode();
                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
                    System.out.println(code+"..是不合法的数字");
                    e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件

            }

        });


        //but添加一个键盘监听
        but.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e){
                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                    System.exit(0);
                System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
                //键盘的组合键
                if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
                    System.out.println("Ctrl+Enter is run");

            }
        });

        but.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("action ok");

            }
        });

        but.addMouseListener(new MouseAdapter() {
            private int count=1;
            private int clickCount=1;
            public void mouseEntered(MouseEvent e){
                System.out.println("鼠标进入到该组件"+count++);
            }
            public void mouseClicked(MouseEvent e){
                System.out.println("点击动作"+clickCount++);
            }
            public void mouseClicked2(MouseEvent e){
                if(e.getClickCount()==2)
                    System.out.println("双击动作"+clickCount++);
            }
        });
    }

    public static void main(String []args){
        new MouseAndKeyEvent();
    }
}


图形界面之列出指定目录内容:

  1. import java.awt.Button;  
  2. import java.awt.Dialog;  
  3. import java.awt.FlowLayout;  
  4. import java.awt.Frame;  
  5. import java.awt.Label;  
  6. import java.awt.TextArea;  
  7. import java.awt.TextField;  
  8. import java.awt.event.ActionEvent;  
  9. import java.awt.event.ActionListener;  
  10. import java.awt.event.KeyAdapter;  
  11. import java.awt.event.KeyEvent;  
  12. import java.awt.event.WindowAdapter;  
  13. import java.awt.event.WindowEvent;  
  14. import java.io.File;  
  15.   
  16. public class MyWindowDemo {  
  17.   
  18.     private Frame f;  
  19.     private TextField tf;  
  20.     private Button but;  
  21.     private Button okBut;  
  22.     private TextArea ta;  
  23.     private Dialog d;  
  24.     private Label lab;//把文字封装成label对象添加进去。  
  25.       
  26.     MyWindowDemo(){  
  27.         init();  
  28.     }  
  29.     public void init(){  
  30.         f=new Frame(“我的窗口”);  
  31.         f.setBounds(300,100,600,500);  
  32.         f.setLayout(new FlowLayout());  
  33.         tf=new TextField(60);  
  34.         but=new Button(“转到”);  
  35.           
  36.         d=new Dialog(f,”提示信息-self”,true);//d本身是一个窗体,不能加到Frame中。  
  37.         d.setBounds(400,200,240,150);  
  38.         d.setLayout(new FlowLayout());  
  39.         lab=new Label();  
  40.         okBut=new Button(“确定”);  
  41.         d.add(lab);  
  42.         d.add(okBut);  
  43.           
  44.         ta=new TextArea(25, 70);  
  45.         f.add(tf);  
  46.         f.add(but);  
  47.         f.add(ta);  
  48.           
  49.         myEvent();  
  50.           
  51.         f.setVisible(true);  
  52.           
  53.     }  
  54.       
  55.     public void myEvent(){  
  56.         okBut.addActionListener(new ActionListener(){  
  57.               
  58.             @Override  
  59.             public void actionPerformed(ActionEvent e) {  
  60.                 d.setVisible(false);  
  61.                   
  62.             }  
  63.         });  
  64.           
  65.         d.addWindowListener(new WindowAdapter(){  
  66.               
  67.             public void windowClosing(WindowEvent e ){  
  68.                 d.setVisible(false);  
  69.             }  
  70.         });  
  71.         //通过键盘对事件进行操作。  
  72.         tf.addKeyListener(new KeyAdapter() {  
  73.             public void keyPressed(KeyEvent e){  
  74.                 if(e.getKeyCode()==KeyEvent.VK_ENTER)  
  75.                     showDir();  
  76.             }  
  77.         });  
  78.           
  79.         but.addActionListener(new ActionListener(){  
  80.             public void actionPerformed(ActionEvent e){  
  81.                 showDir();  
  82.                 //tf.setText(“”);//清除textField的内容  
  83.             }  
  84.         });  
  85.           
  86.           
  87.         f.addWindowListener(new WindowAdapter(){  
  88.               
  89.             public void windowClosing(WindowEvent e ){  
  90.                 System.exit(0);  
  91.             }  
  92.         });  
  93.     }  
  94.       
  95.     private void showDir(){  
  96.         String dirPath=tf.getText();  
  97.         //ta.setText(text);//把获取到文本放到TextArea  
  98.         //System.out.println(text);  
  99.         File dir=new File(dirPath);  
  100.         if(dir.exists()&&dir.isDirectory()){  
  101.           
  102.             ta.setText(“”);//把之前路径找到的文件清除  
  103.             String[] names=dir.list();  
  104.               
  105.             for(String name:names){  
  106.                 //对于有很多文件的话,我们可以把它们存到String Builder中  
  107.                 //append,表示将给定文本追加到文本区的当前文本。  
  108.                 ta.append(name+”\n\r”);//用到换行等  
  109.             }  
  110.               
  111.         }  
  112.         else{  
  113.             String info=“你输入的信息:”+dirPath+”是错误的,请重输”;  
  114.             lab.setText(info);  
  115.             d.setVisible(true);  
  116.         }  
  117.           
  118.     }  
  119.       
  120.     public static void main(String [] args){  
  121.         new MyWindowDemo();  
  122.     }  
  123. }  
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class MyWindowDemo {

    private Frame f;
    private TextField tf;
    private Button but;
    private Button okBut;
    private TextArea ta;
    private Dialog d;
    private Label lab;//把文字封装成label对象添加进去。

    MyWindowDemo(){
        init();
    }
    public void init(){
        f=new Frame("我的窗口");
        f.setBounds(300,100,600,500);
        f.setLayout(new FlowLayout());
        tf=new TextField(60);
        but=new Button("转到");

        d=new Dialog(f,"提示信息-self",true);//d本身是一个窗体,不能加到Frame中。
        d.setBounds(400,200,240,150);
        d.setLayout(new FlowLayout());
        lab=new Label();
        okBut=new Button("确定");
        d.add(lab);
        d.add(okBut);

        ta=new TextArea(25, 70);
        f.add(tf);
        f.add(but);
        f.add(ta);

        myEvent();

        f.setVisible(true);

    }

    public void myEvent(){
        okBut.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                d.setVisible(false);

            }
        });

        d.addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e ){
                d.setVisible(false);
            }
        });
        //通过键盘对事件进行操作。
        tf.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e){
                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                    showDir();
            }
        });

        but.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                showDir();
                //tf.setText("");//清除textField的内容
            }
        });


        f.addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e ){
                System.exit(0);
            }
        });
    }

    private void showDir(){
        String dirPath=tf.getText();
        //ta.setText(text);//把获取到文本放到TextArea
        //System.out.println(text);
        File dir=new File(dirPath);
        if(dir.exists()&&dir.isDirectory()){

            ta.setText("");//把之前路径找到的文件清除
            String[] names=dir.list();

            for(String name:names){
                //对于有很多文件的话,我们可以把它们存到String Builder中
                //append,表示将给定文本追加到文本区的当前文本。
                ta.append(name+"\n\r");//用到换行等
            }

        }
        else{
            String info="你输入的信息:"+dirPath+"是错误的,请重输";
            lab.setText(info);
            d.setVisible(true);
        }

    }

    public static void main(String [] args){
        new MyWindowDemo();
    }
}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值