java之 22天 GUI 图形界面编程(一)
转自:http://takeme.iteye.com/blog/1876850
GUI(图形用户界面)
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; /**
* GUI(图形用户界面)
* Graphical User Interface(图形用户接口)
* 用图形的方式,来显示计算机操作的界面,这样更方便更直观.
*
* CLI
* Command Line User Interface(命令行用户接口)
* 就是常用的Dos命令行操作.
* 需要记忆一些常用的命令.操作更直观.
*
* 举例:
* 比如:创建文件夹,或者删除文件夹等
* md haha del haha
*
*
* Java的GUI提供的对象都存在 java.Awt 和 javax.Swing 两个包中.
*
* java.Awt:Abstract Window ToolKit(抽象 窗口工具包)
* 需要调用本地系统方法实现功能.属重量级控件 (跨平台不够强)
*
* java.Swing:在AWT的基础上,建立的一套图形界面系统,器重提供了更多的组件,
* 而且完全由java实现,增强了移植性,属于轻量级控件.(跨平台很好)
*
* java.swt: IBM 公司开发 Eclipse 用的组件工具 可以Eclipse网站下载后就可以使用了.
*
*
* 布局管理器
* 1)容器中的组件的排放方式,就是布局.
* 2)常见的布局管理器
* FlowLayout(流式布局管理器)
* 从左到右的顺序排列
* Panel默认的布局管理器
* BorderLayout(辩解布局管理器)
* 东 南 西 北 中
* Frame 默认的布局管理器
* 不指定布局方式,默认 满屏覆盖,在添加一个 也是 满屏覆盖
* GridLayout (网格布局管理器)
* 规则的矩阵
* CardLayout (卡片布局管理器)
* 选项卡
* GridBagLayout(网格包布局管理器)
* 非规则的矩阵
*
* 事件监听机制组成
* 事件源:
* 事件:Event
* 监听器:Listener
* 时间处理:(引发事件后处理方式)
*
* 事件源:就是awt包或者swing包中的那些图像界面组件.
* 事件:每个事件源都有自己特定的对应时间和共性时间.
* 监听器:可以出发某一个事件的动作都已经封装到监听器中.
*/ public class GuiDemo {
public static void main(String[] args) {
Frame f=new Frame("my awt");
f.setSize(500,400);
f.setLocation(300,200);
f.setLayout(new FlowLayout()); Button b=new Button("我是一个按钮"); f.add(b); f.addWindowListener(new MyWin()); f.setVisible(true);
System.out.println("Hello world!");
} } //因为接口WindowLinstener中的所有方法都被子类 WindowAdapter实现了,.
//并且覆盖了其中的所有方法,那么我们只能继承 WindowAdapter 覆盖我们的方法即可
class MyWin extends WindowAdapter{ @Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
//System.out.println("Window closing"+e.toString());
System.out.println("我关了");
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
//每次获得焦点 就会触发
System.out.println("我活了");
//super.windowActivated(e);
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("我开了");
//super.windowOpened(e);
} }
简单Frame
Java代码
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; public class FrameDemo { //定义该图像中所需要的组件的引用
private Frame f;
private Button but; FrameDemo(){
init(); } public void init(){ f=new Frame("my freame");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout()); //采用流式布局 but=new Button("my button");
//将组件添加到 frame中
f.add(but); //加载一下窗体上的事件.
myEvent();
//显示窗体
f.setVisible(true);
}
private void myEvent(){
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
//super.windowClosing(e);
System.exit(0);
}
}); //让按钮具备退出程序的功能
/*
* 按钮就是事件源
* 那么选择那个监听器呢?
* 通过关闭窗体实例了解到,下个要知道那个组件具备什么样的特有监听器,
* 需要查看该组件对象的功能.
*/
//添加一个活动监听
but.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("退出, 按钮干的");
System.exit(0);
}
}); } public static void main(String[] args) {
FrameDemo f=new FrameDemo();
} }
键盘和鼠标事件
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; public MouseAndKeyEvent() {
init();
} private void init(){
f=new Frame("me frame");
f.setBounds(300, 200, 600, 500);
f.setLayout(new FlowLayout()); tf=new TextField(20);
but=new Button("my Botton"); f.add(tf);
f.add(but); event(); f.setVisible(true);
} private void event(){
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
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.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("actionPerformed 活动一次");
}
}); but.addMouseListener(new MouseAdapter() {
private int count=0;
private int clickCount=1;
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入到改组件"+count++);
} public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2){
System.out.println("双击动作");
}else
System.out.println("点击动作"+clickCount++); } });
//添加 键盘事件
but.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e){
System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
//enter 就退出
/*if(e.getKeyCode()==KeyEvent.VK_ENTER)
System.
exit(0);*/ //ctrl + Enter 发送消息
if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
System.out.println("我要发送消息!");
} } });
} public static void main(String[] args) {
// TODO Auto-generated method stub
new MouseAndKeyEvent();
} }
- 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;
- public MouseAndKeyEvent() {
- init();
- }
- private void init(){
- f=new Frame("me frame");
- f.setBounds(300, 200, 600, 500);
- f.setLayout(new FlowLayout());
- tf=new TextField(20);
- but=new Button("my Botton");
- f.add(tf);
- f.add(but);
- event();
- f.setVisible(true);
- }
- private void event(){
- f.addWindowListener(new WindowAdapter() {
- @Override
- public void windowClosing(WindowEvent e) {
- // TODO Auto-generated method stub
- 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.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- System.out.println("actionPerformed 活动一次");
- }
- });
- but.addMouseListener(new MouseAdapter() {
- private int count=0;
- private int clickCount=1;
- public void mouseEntered(MouseEvent e){
- System.out.println("鼠标进入到改组件"+count++);
- }
- public void mouseClicked(MouseEvent e){
- if(e.getClickCount()==2){
- System.out.println("双击动作");
- }else
- System.out.println("点击动作"+clickCount++);
- }
- });
- //添加 键盘事件
- but.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e){
- System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
- System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
- //enter 就退出
- /*if(e.getKeyCode()==KeyEvent.VK_ENTER)
- System.
- exit(0);*/
- //ctrl + Enter 发送消息
- if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
- System.out.println("我要发送消息!");
- }
- }
- });
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- new MouseAndKeyEvent();
- }
- }
java之 22天 GUI 图形界面编程(一)的更多相关文章
- java之 22天 GUI 图形界面编程(二)
转自:http://takeme.iteye.com/blog/1876853 模拟window开打文件 import java.awt.Button; import java.awt.Dialog; ...
- Java基础(二十三)GUI图形界面编程(Java基础完)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- Java中的图形界面编程
前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...
- Linux C 程序 GTK+图形界面编程(22)
GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Li ...
- Quartz(GUI)图形界面程序----Quartz Web
下载.设置和运行Quartz(GUI)图形界面程序----Quartz Web 一.获取Quartz Web程序(Quartz GUI).早期的 Quartz 框架开发者意识到一个 GUI 对于某类用 ...
- 图形界面编程成就了C++
听有人说C#.VB比C++好是因为做界面方便还算傻得可爱,听有人说用C++做数值计算而不屑于做界面可就对不起咱C++的恩人了.这我可要说道说道. 想当年C++刚出江湖,名门出身,自立门派,想抢Obje ...
- centOS7下安装GUI图形界面
1.如何在centOS7下安装GUI图形界面 当你安装centOS7服务器版本的时候,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7 Gnome GUI包. 2.在系统下使用命 ...
- CentOS7安装GUI图形界面
本文转自centOS7下安装GUI图形界面,侵权删. 1. 在命令行下 输入下面的命令来安装Gnome包. # yum groupinstall "GNOME Desktop" & ...
- CentOS7 下安装GUI图形界面GNOME
在安装Gnome包之前,需要检查一下网络是否有网络(使用ping www.baidu.com) 一.先装X windows,-y表示参数同意所有软件安装操,当出现 Complete!说明这里安装成功了 ...
随机推荐
- MyEclipse 10、9、8 添加jadClipse反编译插件
jad是一个使用比较广泛的Java反编译软件,jadClipse是jad在eclipse下的插件,如何将jadclipse加入到MyEclipse10.X,9.X,8.X当中: http://nchc ...
- 命令:which、whereis、who和w
开始 命令搜索的顺序 在shell function中查找,有则调用,无则下一步: 判断命令是否为bash内置命令,有则调用,无则下一步: 在$PATH中搜索该命令,有则调用,无则报错. 判断命令类型 ...
- 哪来的gou zi 阿龙(最新更新于1.21日)
众所周知,信息竞赛教室有一个特gou zi的人,叫做阿龙. 这个人呢,特别好玩,特别gou zi 还有一个人,叫Sugar,这个人特别喜欢和阿龙闹,so,一系列爆笑无脑的事就发生了! 1.谁是鱼? 一 ...
- 安卓手机安装 Charles 证书
1: 在 Charles 工具栏里点击 Help --- SSL Proxying --- Save Charles Root Certificate,生成 后缀名是 .cer 的文件, 然后上传到 ...
- 订单超时、活动过期解决方案:php监听redis key失效触发回调事件
Redis 的 2.8.0 版本之后可用,键空间消息(Redis Keyspace Notifications),配合 2.0.0 版本之后的 SUBSCRIBE 就能完成这个定时任务的操作了,定时的 ...
- 【漏洞预警】方程式又一波大规模 0day 攻击泄漏,微软这次要血崩
一大早起床是不是觉得阳光明媚岁月静好?然而网络空间刚刚诞生了一波核弹级爆炸!Shadow Brokers再次泄露出一份震惊世界的机密文档,其中包含了多个精美的 Windows 远程漏洞利用工具,可以覆 ...
- 【BZOJ】4767: 两双手【组合数学】【容斥】【DP】
4767: 两双手 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1057 Solved: 318[Submit][Status][Discuss] ...
- mutiplemap 总结
之前只是在C++ Primer里面看过关联容器,可能因为没有实际用过,只是看看,所以导致用的时候并不熟悉: 在这之前,map和set的特性应该要了解,map是关联数组,也就是由键值对组成的,而set只 ...
- [Phonegap+Sencha Touch] 移动开发18 Sencha Touch项目通过phonegap打包后的程序名字的问题
之前说过 sencha phonegap init com.pushsoft.myapp MyApp 之后打包的程序安装包apk的名字是"MyApp.apk",显示在手机桌面上的程 ...
- LM358资料及引脚图
LM358里面包括有两个高增益.独立的.内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器.直流增益模块和其他所有可用单电源供电的使用运放的地方使 ...