简介Java的GUI

GUI

GUI图形用户界面:用图形的方式,来显示计算机操作的界面

swing demo: http://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html
主要用到的包: Awt与 Swing
java.Awt:抽象窗口工具包,需要调用本地系统方法实现功能。属于重量级控件。
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属于轻量级控件。

布局管理器:容器中的组件的排放方式,就是布局。

常见的布局管理器:
  • FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。
  • BorderLayout(边界布局管理器)东,南,西,北,中。  Frame默认的布局管理器。
  • GridLayout(网格布局管理器)规则的矩阵
  • CardLayout(卡片布局管理器)选项卡
  • GridBagLayout(网格包布局管理器)非规则的矩阵
如何建立一个简单的窗体?

  1. public static void main(String[] args) {  
  2.     Frame  f = new Frame("my window");  
  3.     f.setLayout(new FlowLayout());//设置布局方式  
  4.     f.setSize(500,400);//设置窗体大小,500为横向长度,400为纵向长度  
  5.     f.setLocation(300,200);//设置窗体出现在屏幕的位置,300为离屏幕左边横坐标距离,200为纵向  
  6.     f.setVisible(true);//设置窗体显示  
  7.     }  


这样,一个简单的窗体就创建了,但是我们发现,这就仅仅是一个空白的窗体界面,连关闭按钮都没有实现,只能是强行的停止Java虚拟机了。

那么如何的给窗体添加点个性呢?

事件监听机制的组成:

  • 事件源(组件)
  • 事件(Event)
  • 监听器(Listener)
  • 事件处理(引发事件后处理方式)

    原理图:

事件监听机制的特点:
 1,事件源。
 2,事件
 3,监听器
 4,事件处理。
 事件源:就是awt包或者swing包中的那些图形界面组件。
 事件:每一个事件源都有自己特有的对应事件和共性事件。
 监听器:可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
如,往上序代码加上些监听器

  1.         });  [java] view plaincopyprint?
    1. <span style="font-size:14px;">class Tests extends Frame{  
    2.     /** 
    3.      * 窗体标识ID 
    4.      */  
    5.     private static final long serialVersionUID = 13L;  
    6.       
    7.     TextArea content = null;  
    8.     File f = null;//文件关联  
    9.     FileDialog openDia = new FileDialog(this,"打开文件",FileDialog.LOAD);//文件窗口  
    10.     FileDialog saveDia = new FileDialog(this,"保存文件",FileDialog.SAVE);  
    11.       
    12.     public void initial(){  
    13.         this.setSize(680512);//设置窗体大小  
    14.         this.setLayout(getLayout());//设置布局方式  
    15.         this.setLocation(310,130);//设置窗体出现在屏幕的位置  
    16.           
    17.         // 添加指定的窗口侦听器,以从此窗口接收窗口事件。  
    18.         this.addWindowListener(new WindowAdapter() {  
    19.             //关闭窗口  
    20.             public void windowClosing(WindowEvent e){  
    21.                 System.exit(0);  
    22.             }  
  2.           
  3.         content = new TextArea();//创建一个文本区域  
  4.         this.add(content);  
  5.           
  6.         //我想,我么可以添加一个菜单条  
  7.         MenuBar mb = new MenuBar();  
  8.         this.setMenuBar(mb);  
  9.         //再创建一个菜单  
  10.         Menu file = new Menu("文件");  
  11.         mb.add(file);  
  12.         //添加一个菜单项  
  13.         MenuItem open = new MenuItem("打开");  
  14.         file.add(open);  
  15.         //再添加一个菜单项  
  16.         MenuItem save = new MenuItem("保存");  
  17.         file.add(save);  
  18.         //再添加一个菜单项  
  19.         MenuItem newSave = new MenuItem("另存为");  
  20.         file.add(newSave);  
  21.         //当然还可以有一个子菜单吧  
  22.         Menu help = new Menu("帮助");  
  23.         file.add(help);  
  24.         //在子菜单中再添加一个菜单项  
  25.         MenuItem about = new MenuItem("关于");  
  26.         help.add(about);  
  27.           
  28.         //给菜单项添加指定的窗口侦听器  
  29.         open.addActionListener(new ActionListener() {  
  30.             @Override  
  31.             public void actionPerformed(ActionEvent e) {  
  32.                 openDia.setVisible(true);  
  33.                 String dirPath = openDia.getDirectory();//获取文件目录  
  34.                 String fileName = openDia.getFile();//获取文件名  
  35.                 System.out.println(dirPath+"..."+fileName);  
  36.                 if(dirPath==null || fileName == null)  
  37.                     return;   
  38.                 content.setText("");  
  39.                 f = new File(dirPath, fileName);  
  40.                 try {  
  41.                     BufferedReader bufr = new BufferedReader(new FileReader(f));  
  42.                     String line = null;  
  43.                     while((line = bufr.readLine())!=null){  
  44.                         content.append(line+"\r\n");//将文件读取到文本区域中 去  
  45.                     }  
  46.                     bufr.close();  
  47.                 } catch (Exception e2) {  
  48.                     throw new RuntimeException("读取失败");  
  49.                 }  
  50.             }  
  51.         });  
  52.           
  53.         save.addActionListener(new ActionListener() {  
  54.             @Override  
  55.             public void actionPerformed(ActionEvent e) {  
  56.                 //如果文件关联为null,则弹出窗口,要求选择路径  
  57.                 writeSave(f==null);  
  58.             }  
  59.         });  
  60.           
  61.         newSave.addActionListener(new ActionListener() {  
  62.             @Override  
  63.             public void actionPerformed(ActionEvent e) {  
  64.                 writeSave(true);  
  65.             }  
  66.         });  
  67.           
  68.         this.setVisible(true);  
  69.     }  
  70.   
  71.     public void writeSave(boolean b){  
  72.         if(b){  
  73.             saveDia.setVisible(true);  
  74.             String dirPath = saveDia.getDirectory();  
  75.             String fileName = saveDia.getFile();  
  76.             if(dirPath==null || fileName == null)  
  77.                 return;   
  78.             f = new File(dirPath, fileName);  
  79.         }  
  80.         try {  
  81.             BufferedWriter bufw = new BufferedWriter(new FileWriter(f));  
  82.             String text =content.getText();  
  83.             bufw.write(text);//将数据写入文件  
  84.             bufw.close();  
  85.         } catch (Exception e2) {  
  86.             throw new RuntimeException();  
  87.         }  
  88.     }  
  89.       
  90.     public static void main(String[] args) {  
  91.         new Tests().initial();  
  92.     }  
  93. }</span>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值