------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、概念

1, Graphical User Interface(图形用户接口)用图形的方式,来显示计算机操作的界面,这样更方便更直观。

2,  用户与计算机交互方式有俩种:除了GUI之外还有CLI(命令行用户接口),例如Dos命令行操作,操作不直观看。

3,  java为GUI提供的对象都存在java.Awt和javax.Swing俩个包中。

java.Awt: Abstract Window Toolkit(抽象窗口工具包),需要调用本地系统方法

实现功能,属于重量级控件。

javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且

完全由java实现。增强了移植性,属轻量级控件。

二、GUI的应用

1、基本设置

设置窗体大小:setSize(长,宽);

设置窗体位置:setLocation(距离左,距离上);setBounds(长,宽,距离左,距离上);

设置布局:setLayout(new FlowLayout());

使窗体可见:setVisible(true);

2、事件监听机制的特点

<1,事件源。

<2,事件。

<3,监听器。

<4,事件处理。

事件源:就是awt包或者swing包中的那些图形界面组件。

事件:每一个事件源都有自己特有的对应事件和共性事件。

监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。

以上三者,在java中都已经定义好了。

直接获取其对象来用就可以了。

我们要做的事情是,就是对产生的动作进行处理

例:

 1 import java.awt.Button;
 2 import java.awt.Frame;
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 import java.awt.event.WindowAdapter;
 6 import java.awt.event.WindowEvent;
 7
 8 public class AwtEventDemo {
 9     public static void main(String[]args)
10     {
11         new AwtEventDemo();
12         //System.out.println();
13     }
14     private Frame f=null;
15     private Button b =null;
16     AwtEventDemo()
17     {
18         init();
19     }
20     public  void init()
21     {
22          f = new Frame("我的窗体");//创建一个名叫我的窗体的窗体
23         f.setSize(500,400);//设置窗体大小
24         f.setLocation(300,200);//设置窗体位置
25         //f.setBounds(500,400,300,200);//综合上面俩项
26         b = new Button("我的按钮");//创建一个名叫我的按钮的按钮
27         f.add(b);//添加按钮
28         f.addWindowListener(new WindowAdapter()//在窗体f中添加一个监听器,
29         {
30             public void windowClosing(WindowEvent e)//复写WindowAdapter的方法windowClosing,将事件打包成对象传递进去。
31             {
32                 System.exit(0);//事件发生即会自动调用这个方法。
33             }
34         });
35         b.addActionListener(new ActionListener()//在按钮b上添加监听器,
36         {
37             public void actionPerformed(ActionEvent e)//复写掉点击方法  并传入被监听器打包成的对象
38             {
39                 System.exit(0);//处理方式
40             }
41         });
42         f.setVisible(true);//通过加载boolean值来确定显示窗体f
43     }
44 }

3、对话框:Dialog

此对象在需要时进行调用,如:在错误操作时提示的提示对话框。

例:

  1 /*
  2 列出指定目录下的内容,当输入的路径不正确时,给出错误提示信息。
  3 */
  4 import java.io.*;
  5 import java.awt.*;
  6 import java.awt.event.*;
  7 class MyWindowDemo
  8 {
  9     //定义所需组件引用
 10     private Frame f;
 11     private Button but,bok;
 12     private TextField tf;
 13     private TextArea ta;
 14     private Dialog d;
 15     private Label lab;
 16     //构造函数
 17     MyWindowDemo()
 18     {
 19         init();
 20     }
 21     //窗体基本设置于功能实现
 22     public void init()
 23     {
 24         //组件实例化
 25         f=new Frame("我的Window");
 26         but=new Button("跳转");
 27         tf=new TextField(50);
 28         ta=new TextArea(30,60);
 29         //基本设置
 30         f.setBounds(300,150,500,500);
 31         f.setLayout(new FlowLayout());
 32         //添加组件
 33         f.add(tf);
 34         f.add(but);
 35         f.add(ta);
 36         //窗体事件
 37         myEvent();
 38         //窗体显示
 39         f.setVisible(true);
 40     }
 41     //注册事件
 42     public void myEvent()
 43     {
 44         //窗体关闭功能
 45         f.addWindowListener(new WindowAdapter()
 46         {
 47             public void windowClosing(WindowEvent e)
 48             {
 49                 System.exit(0);
 50             }
 51         });
 52         //“跳转”按钮事件
 53         but.addActionListener(new ActionListener()
 54         {
 55             public void actionPerformed(ActionEvent e)
 56             {
 57                 showFile();//列出目录内容在文本区中
 58             }
 59         });
 60         //文本框键盘事件
 61         tf.addKeyListener(new KeyAdapter()
 62         {
 63             public void keyPressed(KeyEvent e)
 64             {
 65                 //如果键盘按下Enter键,就将目录内容显示在文本区中
 66                 if(e.getKeyCode()==KeyEvent.VK_ENTER)
 67                     showFile();
 68             }
 69         });
 70     }
 71
 72     //目录内容显示在文本区中方法
 73         private void showFile()
 74         {
 75             String path=tf.getText();//获取输入的路径
 76             File dir=new File(path);//将路径封装成对象
 77             //判断输入的路径是否存在,且是否是文件夹
 78             if (dir.exists()&&dir.isDirectory())
 79             {
 80                 ta.setText("");//清空文本区中的内容---------
 81                 String names[]=dir.list();//列出目录下的内容
 82                 //遍历
 83                 for (String name : names )
 84                 {
 85                     ta.append(name+"\r\n");//添加进文本区中
 86                 }
 87             }
 88             else
 89             {
 90                 //对话框基本设置
 91                 d=new Dialog(f,"错误提示",true);
 92                 d.setBounds(400,200,280,150);
 93                 d.setLayout(new FlowLayout());
 94
 95                 bok=new Button("确定");
 96                 lab=new Label();
 97
 98                 //添加按钮和文本
 99                 d.add(bok);
100                 d.add(lab);
101                 //对话框关闭事件
102                 d.addWindowListener(new WindowAdapter()
103                 {
104                     public void windowClosing(WindowEvent e)
105                     {
106                         d.setVisible(false);//退出对话框
107                     }
108                 });
109                 //“确定”按钮事件
110                 bok.addActionListener(new ActionListener()
111                 {
112                     public void actionPerformed(ActionEvent e)
113                     {
114                         d.setVisible(false);//按确认键,退出对话框
115                     }
116                 });
117                 String info="您输入的路径:"+path+"是错误的,请重输!";
118                 lab.setText(info);//设置标签文本内容
119                 d.setVisible(true);//显示对话框
120             }
121         }
122     public static void main(String[] args)
123     {
124         //运行窗体
125         new MyWindowDemo();
126     }
127 }  

4.菜单:menu

a,Menu:菜单,继承MenuITem;有右三角的图标存在,可添加Menu和MenuItem

b,MenuBar:菜单栏,可添加菜单和菜单条目,一般先创建菜单栏,再创建菜单

c,MenuItem:菜单条目,无右三角的图标存在,最终菜单项

d,菜单的时间处理和组件相同,可以对类型为MenuIte和Menu的对象这个事件源添 加活动监听

ActionListener,并进行相关处理。

e,通过setMenuBar()方法,将菜单添加到Frame中。

  1 import java.awt.Button;
  2 import java.awt.FlowLayout;
  3 import java.awt.Frame;
  4 import java.awt.TextArea;
  5 import java.awt.TextField;
  6 import java.awt.event.KeyAdapter;
  7 import java.awt.event.KeyEvent;
  8 import java.awt.event.MouseAdapter;
  9 import java.awt.event.MouseEvent;
 10 import java.awt.event.WindowAdapter;
 11 import java.awt.event.WindowEvent;
 12 import java.io.File;
 13
 14
 15 public class KeyAndMouseEvent {
 16
 17     //创建组件引用(全局)
 18     private Frame f;  //窗体
 19     private Button but;  //按钮
 20     private TextField tf;  //文本框
 21     private TextArea ta;  //文本
 22
 23     //构造函数
 24     KeyAndMouseEvent()
 25     {
 26         init();
 27     }
 28
 29     //窗体创建与功能实现
 30     public void init()
 31     {
 32         //组件实例化
 33         f=new Frame("my fame");
 34         but=new Button("跳转");
 35         tf=new TextField(50);
 36         ta=new TextArea(30,58);
 37
 38         //设置窗体
 39         f.setBounds(300,150,500,500); //大小位置
 40         f.setLayout(new FlowLayout()); // 流适布局
 41
 42         //将组件添加到窗体中
 43         f.add(tf);
 44         f.add(but);
 45         f.add(ta);
 46
 47         //窗体事件
 48         myEvent();
 49
 50         //窗体显示
 51         f.setVisible(true);
 52     }
 53
 54     //将所有的窗体事件封装到一个方法中
 55     public void myEvent()
 56     {
 57
 58         f.addWindowListener(new WindowAdapter()  //窗体关闭功能
 59         {
 60             public void windowClosing(WindowEvent e)
 61             {
 62                 System.exit(0);
 63             }
 64         });
 65
 66         /*
 67
 68         but.addActionListener(new ActionListener() //按钮监听
 69         {
 70             public void actionPerformed(ActionEvent e)
 71             {
 72                 System.out.println("按钮在动");
 73             }
 74         });
 75         */
 76
 77
 78         but.addMouseListener(new MouseAdapter()  //鼠标监听
 79         {
 80             //int count=0;
 81             public void mouseClicked(MouseEvent e)  //
 82             {
 83             //  if(e.getClickCount()==2)  //getClickCount,获取鼠标点击次数
 84             //      System.out.println("鼠标双击按钮");
 85
 86             //  System.out.println("鼠标单击按钮");
 87                 //System.exit(0);
 88
 89                 showFile();//显示到文本区中
 90             }
 91             /*
 92             public void mouseEntered(MouseEvent e) //鼠标放入按钮去监听
 93             {
 94                 System.out.println("鼠标放进入按钮范围"+(++count)+"次");
 95             }
 96             */
 97         });
 98
 99         /*
100         //按钮键盘事件
101         but.addKeyListener(new KeyAdapter() //键盘监听事件,
102         {
103             public void keyPressed(KeyEvent e)
104             {
105                 //捕获同时按下ctrl+entry
106                 if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
107                     System.out.println("Ctrl+Enter.....is Down");
108
109                 //System.out.println(e.getKeyText(e.getKeyCode())+"---"+e.getKeyCode());
110             }
111         });
112         */
113
114
115         tf.addKeyListener(new KeyAdapter()  //文本框监听事件
116         {
117             public void keyPressed(KeyEvent e)
118             {
119                 /*
120                 //判断输入字符是否是数字
121                 if(e.getKeyCode()<KeyEvent.VK_0||e.getKeyCode()>KeyEvent.VK_9)
122                 {
123                     System.out.println("你输入的数字非法,请重数");
124                     e.consume();//不显示输入的字符
125                 }
126                 */
127
128                 if(e.getKeyCode()==KeyEvent.VK_ENTER)
129                     showFile();//将目录下的内容显示到文本区中
130             }
131         });
132     }
133
134     //将路径下的目录或文件列出
135     private void showFile()
136     {
137         String path=tf.getText();//获取文本框内容
138         File file=new File(path);//将路径封装成文件对象
139         //判断是否存在
140         if(file.exists())
141         {
142             ta.setText("");//清空文本区中的内容
143
144             if(file.isDirectory())  //如果是目录
145             {
146                 String[] dir=file.list();//列出目录下的文件和目录
147
148                 for (String name : dir) //遍历
149                 {
150                     ta.append(name+"\r\n");//添加到文本区中
151                 }
152             }
153             else
154                 ta.append(file.getName());//如果是文件,则只显示该文件的名字
155         }
156         else
157             System.out.println("输入路径错误");
158     }
159
160
161     public static void main(String[] args)
162     {
163         //运行窗体
164         new KeyAndMouseEvent();
165     }
166
167 }

打jar包的过程:

1、 编译包 jar –cvf jar名 包名

2、 写一个文件main-class: 包名.类名【加个回车】

3、 jar –cvfm jar名 文件名 包名

配置jar执行的过程:

工具---文件夹选项---文件类型---新建---文件扩展名jar

然后确定----高级----修改图标-----open------javaw的路径—jar即可!

转载于:https://www.cnblogs.com/ZkSnug/p/4457617.html

黑马程序员---java基础-Java之GUI相关推荐

  1. 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式

    GUI(Graphical User Interface)(图形用户接口):用图形的方式,来 显示计算机操作的界面,这样更方便更直观 CLI(Conmand line User Interface)( ...

  2. 黑马程序员----0704期java基础班心得

    ------<a  target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程 ...

  3. 黑马程序员 python 基础版 哪个老师_(看黑马程序员Python基础班视频挺好,犹豫该不该报班?)...

    看黑马程序员Python基础班视频挺好,犹豫该不该报班? 如果看视频比较好的话,还是建议自学吧,毕竟录制视频的老师不一定参与实质的讲课,且能自学也省一笔培训费用了.我是看的bilibili上黑马程序员 ...

  4. 黑马程序员_基础测试

    -------android培训.java培训.期待与您交流! ---------- 黑马程序员训练营基础测试题及个人代码(包含思路.步骤和基本注释) 1. 编写程序计算12+22+32+....+1 ...

  5. 黑马程序员-iOS基础-Objective-C基础(六)内存管理

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序员-iOS基础-Objective-C基础(六)内存管理 一.内存管理的必要性 移动设备 ...

  6. 黑马程序员-黑马程序员训练营基础测试

    ---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 为了帮助更多的人了解黑马,让更多想知道黑马测 ...

  7. 黑马程序员 一、java 概述与基础知识

    获取更多资源关注Java帮帮IT资源分享网 一.黑马程序员-java 概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果 的过程. 为了使 ...

  8. 黑马程序员 C++ 基础语法入门 学习记录

    基础语法入门 文章目录 一.初识C++ 1.1 新建项目 1.2 编写项目 1.3 运行程序 1.4 注释 1.5 变量 1.6 常量 1.7 关键字 1.8 标识符命名规则 二.数据类型 2.1 整 ...

  9. 黑马程序员——JavaScript基础1(初识 JavaScript)

    文章目录 一.初识 JavaScript 1.1 JavaScript 是什么 1.2 JavaScript 的作用 1.3 HTML/CSS/JS 的关系 1.4 浏览器执行 JS 简介 1.5 J ...

  10. 黑马程序员___Java基础[02-Java基础语法](一)

    Java语言基础组成 一.关键字 1)定义:被Java语言赋予了特殊含义的单词 2)特点:关键字中所有字母均为小写 3)作用及分类: 下面是Java语言保留专用的50个关键字: 用于定义数据类型的关键 ...

最新文章

  1. Tensorflow多线程输入数据处理框架(一)——队列与多线程
  2. 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
  3. 微信小程序Java登录流程(ssm实现具体功能和问题解决方案)
  4. 为您的Office文档加把锁-ADRMS的安装
  5. Boost:矩阵转置的测试程序
  6. Javascript is based on signal thread
  7. java删除文件模糊_Java实现的模糊匹配某文件夹下的文件并删除功能示例
  8. 汇编语言中变量的声明
  9. [新品发布]全球首个百万IOPS云盘来了 阿里云推出超高性能云盘ESSD
  10. Asp.Net请求原理and页面生命周期(转)
  11. 临时和永久关闭Selinux
  12. Python入门--函数传递过程中实参的变化
  13. 原生Ajax的4大步骤分享
  14. NOIP模拟题——LGTB与序列
  15. 新生儿肺炎也许不发烧咳嗽
  16. Eclipse设置字体大小
  17. GJB 软件质量保证报告(模板)
  18. 【Websocket编程】基于libwebsockets实现客户端数据通信
  19. Mac中如何卸载pkg包
  20. Typescript - 安装与配置

热门文章

  1. 经典算法题--求对策字符串的最大长度
  2. 1091 N-自守数 (15分)
  3. 问题 K: A+B Problem (III) : Input/Output Practice 山东科技大学OJ c语言
  4. 初一辍学学php能行吗_那些初中就辍学的小姑娘现在过得如何了?
  5. python request headers获取_Python爬虫实战—— Request对象之header伪装策略
  6. Python爬虫_正则表达式小例子
  7. Ren获得Zcash技术咨询委员会资助,将在币安智能链上启动RenZEC流动性引导计划
  8. 公链项目 Taraxa 已开启公募 KYC,投资者可在 3 月 12 日申购
  9. A股开盘:深证区块链50指数跌0.30%,近150只概念股下跌
  10. SAP License:FICO面试问题