zoukankan      html  css  js  c++  java
  • 黑马程序员——java学习13(毕22)——GUI

    1、GUI

    1.1、

    java.awt: Abstract Window ToolKit(抽象窗口工具包)需要调用本地系统方法实现功能。跨平台性稍不好,属重量级控件

    javax.Swing: 在AWT基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现,增强了移植性,属轻量级控件

     1 package learn;
     2 
     3 import java.awt.Button;
     4 import java.awt.FlowLayout;
     5 import java.awt.Frame;
     6 import java.awt.event.WindowAdapter;
     7 import java.awt.event.WindowEvent;
     8 import java.awt.event.WindowListener;
     9 /*
    10  * 创建图形化界面
    11  * 1、创建frame窗体
    12  * 2、对窗体进行基本设置
    13  *         比如大小,位置,布局,
    14  * 3、定义组件
    15  * 4、将组件通过窗体的add方法添加到窗体中
    16  * 5、让窗体显示,通过setVisible(true)
    17  * 
    18  * 事件监听机制特点
    19  * 1、事件源
    20  * 2、事件
    21  * 3、监听器
    22  * 4、事件处理
    23  * 
    24  * 事件源:就是AWT包或者swing包中的那些图形界面组件
    25  * 事件:每一个事件源都有特有的对应事件和共性事件
    26  * 
    27  * 监听器:将可以触发一个事件的动作(不只一个动作)都已经封装到了监听器中
    28  * 以上三者,在java中都已经定义好了
    29  * 直接获取其对象来用就可以了。
    30  * 我们要做的事情是,就是对产生的动作进行处理
    31  * 
    32  * */
    33 public class AwtDemo {
    34     public static void main(String[] args) {
    35         Frame f = new Frame("my awt");
    36         f.setSize(500,400);
    37         f.setLocation(300,200);
    38         f.setLayout(new FlowLayout());
    39         Button b = new Button("我是一个按钮");
    40         f.add(b);
    41 //        f.addWindowListener(new Mywin());
    42         //内部类 
    43         f.addWindowListener(new WindowAdapter()
    44         {
    45             public void windowClosing(WindowEvent e)
    46             {
    47                 System.out.println("我关");
    48                 System.exit(0);
    49             }
    50         }
    51         );
    52         //设可见边框
    53         f.setVisible(true);
    54 //        System.out.println("helloworld");
    55     }    
    56 }
    57 //class MyWin implements WindowListener
    58 //{
    59 //    //覆盖7个方法,可只需要关闭
    60 //    //其他没用到的也得覆写
    61 //}
    62 //因为WindowListener的子类WindowAdapter已经实现了WindowListener接口
    63 //并覆盖了其中的所有方法,那么我只要继承WindowAdapter覆盖我需要的方法既可
    64 class Mywin extends WindowAdapter
    65 {
    66     public void windowClosing(WindowEvent e)
    67     {
    68         System.out.println("WindowClosing");
    69         System.exit(0);
    70     }
    71 }

    1.2、按钮的监听

     1 package learn;
     2 
     3 import java.awt.Button;
     4 import java.awt.FlowLayout;
     5 import java.awt.Frame;
     6 import java.awt.event.ActionEvent;
     7 import java.awt.event.ActionListener;
     8 import java.awt.event.WindowAdapter;
     9 import java.awt.event.WindowEvent;
    10 
    11 public class FrameDemo {
    12     //定义图形中所需的组件的引用
    13     private Frame f;
    14     private Button but;
    15     FrameDemo()
    16     {
    17     init();    
    18     }
    19     public void init()
    20     {
    21         f =new Frame("myframe");
    22         //对frame进行基本设置
    23         f.setBounds(300,100,600,500);
    24         f.setLayout(new FlowLayout());
    25         
    26         but = new Button("my button");
    27         //将组件添加到frame中
    28         f.add(but);
    29         //加载一下窗体上时间
    30         myEvent();
    31         //显示窗体
    32         f.setVisible(true);
    33     }
    34     private void myEvent()
    35     {
    36         f.addWindowListener(new WindowAdapter()
    37         {public void windowClosing(WindowEvent e)
    38             {
    39                 System.exit(0);
    40             }
    41         });
    42         //让按钮具备退出程序功能
    43         //按钮就是事件源
    44         //通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器
    45         //需要查看该组件对象的功能
    46         //通过查阅Buffon的描述,发现按钮支持一个特有监听addActionListener
    47         but.addActionListener(new ActionListener()
    48         {
    49             public void actionPerformed(ActionEvent e)
    50             {
    51                 System.out.println("退出,按钮干的");
    52                 System.exit(0);
    53             }
    54         });
    55     }
    56     
    57     public static void main(String[] args) {
    58         
    59         new FrameDemo();
    60     }
    61 }

    1.3、鼠标键盘监听

    if(e.getClickCount()==2)//监听双击

    if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)//组合键

    e.consume();//屏蔽进

      1 package learn;
      2 
      3 import java.awt.Button;
      4 import java.awt.FlowLayout;
      5 import java.awt.Frame;
      6 import java.awt.TextField;
      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 public class MouseAndKey {
     15     
     16         //定义图形中所需的组件的引用
     17         private Frame f;
     18         private Button but;
     19         private TextField tf;
     20         MouseAndKey()
     21         {
     22         init();    
     23         }
     24         public void init()
     25         {
     26             f =new Frame("myframe");
     27         
     28             f.setBounds(300,100,600,500);
     29             f.setLayout(new FlowLayout());
     30             tf = new TextField(20);
     31             but = new Button("my button");
     32             
     33             f.add(tf);
     34             f.add(but);
     35             
     36             myEvent();
     37         
     38             f.setVisible(true);
     39         }
     40         private void myEvent()
     41         {
     42             f.addWindowListener(new WindowAdapter()
     43             {public void windowClosing(WindowEvent e)
     44                 {
     45                     System.exit(0);
     46                 }
     47             });
     48             tf.addKeyListener(new KeyAdapter()
     49             {
     50                 public void keyPressed(KeyEvent e)
     51                 {
     52                     int code = e.getKeyCode();
     53                     if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
     54                     {
     55                         System.out.println("code是非法");
     56                         //屏蔽进
     57                         e.consume();
     58                     }
     59                         
     60                 }
     61             });
     62             //键盘监听
     63             but.addKeyListener(new KeyAdapter()
     64             {
     65                 public void keyPressed(KeyEvent e)
     66                 {
     67                     if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
     68                         System.out.println("ctrl+enter");
     69                     //esc
     70 //                    if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
     71 //                        System.exit(0);
     72 //                    System.out.println(KeyEvent.getKeyText(e.getKeyChar())+"......."+e.getKeyCode());
     73                 }
     74             });
     75 //            but.addActionListener(new ActionListener()
     76 //            {
     77 //                public void actionPerformed(ActionEvent e)
     78 //                {
     79 //                    System.out.println("action ok");
     80 //                }
     81 //            }
     82 //            );
     83             but.addMouseListener(new MouseAdapter()
     84             {
     85                 private int count = 1;
     86                 private int clickCount=1;
     87                 public void mouseEntered(MouseEvent e)
     88                 {
     89                     System.out.println("鼠标进入到该组件"+count++);
     90                 }
     91                 public void mouseClicked(MouseEvent e)
     92                 {
     93                     if(e.getClickCount()==2)
     94                     System.out.println("双击动作"+clickCount++);
     95                 }
     96             });
     97         }
     98         public static void main(String[] args) {
     99             new MouseAndKey();
    100         }
    101 }

    1.4、列出制定目录内容&弹窗

      1 package learn;
      2 
      3 import java.awt.Button;
      4 import java.awt.Dialog;
      5 import java.awt.FlowLayout;
      6 import java.awt.Frame;
      7 import java.awt.Label;
      8 import java.awt.TextArea;
      9 import java.awt.TextField;
     10 import java.awt.event.ActionEvent;
     11 import java.awt.event.ActionListener;
     12 import java.awt.event.KeyAdapter;
     13 import java.awt.event.KeyEvent;
     14 import java.awt.event.WindowAdapter;
     15 import java.awt.event.WindowEvent;
     16 import java.io.File;
     17 
     18 public class MyWindowDemo {
     19     private Frame f;
     20     private TextField tf;
     21     private Button but;
     22     private TextArea ta;
     23     private Dialog d;
     24     private Label lab;
     25     private Button okBut;
     26     MyWindowDemo()
     27     {
     28         init();
     29     }
     30     public void init()
     31     {
     32         f = new Frame("my window");
     33         f.setBounds(300,100,600,500);
     34         //流布局,默认布局是边界布局,且居中
     35         f.setLayout(new FlowLayout());
     36         tf = new TextField(30);
     37         but = new Button("转到");
     38         ta = new TextArea(25,70);
     39         
     40         d = new Dialog(f,"提示信息-self",true);
     41         d.setBounds(400, 200, 240, 150);
     42         d.setLayout(new FlowLayout());
     43         lab = new Label();
     44         okBut = new Button("确定");
     45         
     46         d.add(lab);
     47         d.add(okBut);
     48         
     49         
     50         f.add(tf);
     51         f.add(but);
     52         f.add(ta);
     53         myEvent();
     54         f.setVisible(true);
     55         
     56     
     57     }
     58     private void myEvent()
     59     {
     60         okBut.addActionListener(new ActionListener()
     61         {
     62             public void actionPerformed(ActionEvent e)
     63             {
     64                 d.setVisible(false);
     65             }
     66         });
     67         f.addWindowListener(new WindowAdapter()
     68         {
     69             public void windowClosing(WindowEvent e)
     70             {
     71                 d.setVisible(false);
     72             }
     73         });
     74         
     75         tf.addKeyListener(new KeyAdapter()
     76         {
     77             public void keyPressed(KeyEvent e)
     78             {
     79                 if(e.getKeyCode()==KeyEvent.VK_ENTER)
     80                     showDir();    
     81             }
     82         });
     83         but.addActionListener(new ActionListener()
     84         {
     85             public void actionPerformed(ActionEvent e)
     86             {
     87                 showDir();
     88             }
     89         });
     90         f.addWindowListener(new WindowAdapter()
     91         {
     92             public void windowClosing(WindowEvent e)
     93             {
     94                 System.exit(0);
     95             }
     96         });
     97     }
     98     private void showDir()
     99     {
    100         String dirPath =tf.getText();
    101         File dir = new File(dirPath);
    102         if(dir.exists()&&dir.isDirectory())
    103         {
    104             ta.setText("");
    105             String[] names = dir.list();
    106             for(String name:names)
    107             {
    108                 ta.append(name+"
    ");
    109             }
    110         }
    111         else
    112         {
    113             String info = "您输入的信息:"+dirPath+"是错误的,请重输";
    114             lab.setText(info);
    115             d.setVisible(true);
    116         }
    117     }
    118     public static void main(String[] args) {
    119         new MyWindowDemo();
    120     }
    121     
    122 }

    1.5、菜单

    打开,保存。

      1 package learn;
      2 
      3 import java.awt.FileDialog;
      4 import java.awt.Frame;
      5 import java.awt.Menu;
      6 import java.awt.MenuBar;
      7 import java.awt.MenuItem;
      8 import java.awt.TextArea;
      9 import java.awt.event.ActionEvent;
     10 import java.awt.event.ActionListener;
     11 import java.awt.event.WindowAdapter;
     12 import java.awt.event.WindowEvent;
     13 import java.io.BufferedReader;
     14 import java.io.BufferedWriter;
     15 import java.io.File;
     16 import java.io.FileReader;
     17 import java.io.FileWriter;
     18 import java.io.IOException;
     19 
     20 public class MyMenuDemo {
     21     private Frame f;
     22     private MenuBar bar;
     23     private TextArea ta;
     24     private Menu fileMenu;
     25     private MenuItem openItem,saveItem,closeItem;
     26     private FileDialog openDia,saveDia;
     27     private File file;
     28     
     29     
     30     MyMenuDemo()
     31     {
     32         init();
     33     }
     34     public void init()
     35     {
     36         f = new Frame("my window");
     37         f.setBounds(300,100,650,600);
     38 
     39         
     40         bar = new MenuBar();
     41         
     42         ta = new TextArea();
     43         
     44         fileMenu = new Menu("文件");
     45         
     46         
     47         openItem = new MenuItem("打开");
     48         saveItem = new MenuItem("保存");
     49         closeItem = new MenuItem("退出");
     50         
     51 
     52         fileMenu.add(openItem);
     53         fileMenu.add(saveItem);
     54         fileMenu.add(closeItem);
     55         bar.add(fileMenu);
     56         
     57         f.setMenuBar(bar);
     58         openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
     59         saveDia = new FileDialog(f,"我要打开",FileDialog.SAVE);
     60         
     61         f.add(ta);
     62         myEvent();
     63         f.setVisible(true);
     64         
     65     }
     66     private void myEvent()
     67     {
     68         saveItem.addActionListener(new ActionListener()
     69         {
     70             public void actionPerformed(ActionEvent e)
     71             {
     72                 //文件不存在才建文件
     73                 if(file == null)
     74                 {
     75                     saveDia.setVisible(true);
     76                     String dirPath = saveDia.getDirectory();
     77                     String fileName = saveDia.getFile();
     78                     if(dirPath==null||fileName==null)
     79                         return ;
     80                 
     81                     file = new File(dirPath,fileName);
     82                 }
     83                 try
     84                 {
     85                     BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
     86                     String text =ta.getText();
     87                     bufw.write(text);
     88                     //bufw.flush();
     89                     bufw.close();
     90                 }
     91                 catch(IOException e3)
     92                 {
     93                     throw new RuntimeException();
     94                 }
     95             }
     96         });
     97         openItem.addActionListener(new ActionListener()
     98         {
     99             public void actionPerformed(ActionEvent e)
    100             {
    101                 openDia.setVisible(true);
    102                 String dirPath = openDia.getDirectory();
    103                 String fileName = openDia.getFile();
    104                 System.out.println(dirPath+"::"+fileName);
    105                 if(dirPath==null||fileName==null)
    106                     return ;
    107                 ta.setText("");
    108                 File file = new File(dirPath,fileName);
    109                 try
    110                 {
    111                     BufferedReader bufr = new BufferedReader(new FileReader(file));
    112                     String line = null;
    113                     while((line=bufr.readLine())!=null)
    114                     {
    115                         ta.append(line+"
    ");
    116                     }
    117                     bufr.close(); 
    118                 }
    119                 catch(IOException e1)
    120                 {
    121                     throw new RuntimeException("读取失败");
    122                 }
    123             }
    124         });
    125         closeItem.addActionListener(new ActionListener()
    126         {
    127             public void actionPerformed(ActionEvent e)
    128             {
    129                 System.exit(0);
    130             }
    131         });
    132         f.addWindowListener(new WindowAdapter()
    133         {
    134             public void windowClosing(WindowEvent e)
    135             {
    136                 System.exit(0);
    137             }
    138         });
    139     }
    140     
    141     public static void main(String[] args) {
    142         new MyMenuDemo();
    143     }
    144 }
  • 相关阅读:
    被 5 整除的数
    天才的主意
    天才的主意
    谷歌浏览器 —— 快捷键(vimium:像使用 vim 一样操作当前页面)
    谷歌浏览器 —— 快捷键(vimium:像使用 vim 一样操作当前页面)
    膨胀和腐蚀操作中的不同结构元效果对比
    水果的辨异
    水果的辨异
    推理集 —— 特殊与差异
    推理集 —— 特殊与差异
  • 原文地址:https://www.cnblogs.com/sunxlfree1206/p/4725318.html
Copyright © 2011-2022 走看看