转自: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();
} }
  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. public class MouseAndKeyEvent {
  14. private Frame f;
  15. private Button but;
  16. private TextField tf;
  17. public MouseAndKeyEvent() {
  18. init();
  19. }
  20. private void init(){
  21. f=new Frame("me frame");
  22. f.setBounds(300, 200, 600, 500);
  23. f.setLayout(new FlowLayout());
  24. tf=new TextField(20);
  25. but=new Button("my Botton");
  26. f.add(tf);
  27. f.add(but);
  28. event();
  29. f.setVisible(true);
  30. }
  31. private void event(){
  32. f.addWindowListener(new WindowAdapter() {
  33. @Override
  34. public void windowClosing(WindowEvent e) {
  35. // TODO Auto-generated method stub
  36. System.exit(0);
  37. }
  38. });
  39. tf.addKeyListener(new KeyAdapter() {
  40. public void keyPressed(KeyEvent e){
  41. int code=e.getKeyCode();
  42. if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
  43. System.out.println(code+"....非法的输入");
  44. e.consume();  //不执行加入文本框.
  45. }
  46. }
  47. });
  48. but.addActionListener(new ActionListener() {
  49. @Override
  50. public void actionPerformed(ActionEvent e) {
  51. // TODO Auto-generated method stub
  52. System.out.println("actionPerformed 活动一次");
  53. }
  54. });
  55. but.addMouseListener(new MouseAdapter() {
  56. private int count=0;
  57. private int clickCount=1;
  58. public void mouseEntered(MouseEvent e){
  59. System.out.println("鼠标进入到改组件"+count++);
  60. }
  61. public void mouseClicked(MouseEvent e){
  62. if(e.getClickCount()==2){
  63. System.out.println("双击动作");
  64. }else
  65. System.out.println("点击动作"+clickCount++);
  66. }
  67. });
  68. //添加 键盘事件
  69. but.addKeyListener(new KeyAdapter() {
  70. public void keyPressed(KeyEvent e){
  71. System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
  72. System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
  73. //enter  就退出
  74. /*if(e.getKeyCode()==KeyEvent.VK_ENTER)
  75. System.
  76. exit(0);*/
  77. //ctrl + Enter 发送消息
  78. if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
  79. System.out.println("我要发送消息!");
  80. }
  81. }
  82. });
  83. }
  84. public static void main(String[] args) {
  85. // TODO Auto-generated method stub
  86. new MouseAndKeyEvent();
  87. }
  88. }

java之 22天 GUI 图形界面编程(一)的更多相关文章

  1. java之 22天 GUI 图形界面编程(二)

    转自:http://takeme.iteye.com/blog/1876853 模拟window开打文件 import java.awt.Button; import java.awt.Dialog; ...

  2. Java基础(二十三)GUI图形界面编程(Java基础完)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  3. Java中的图形界面编程

    前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...

  4. Linux C 程序 GTK+图形界面编程(22)

    GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Li ...

  5. Quartz(GUI)图形界面程序----Quartz Web

    下载.设置和运行Quartz(GUI)图形界面程序----Quartz Web 一.获取Quartz Web程序(Quartz GUI).早期的 Quartz 框架开发者意识到一个 GUI 对于某类用 ...

  6. 图形界面编程成就了C++

    听有人说C#.VB比C++好是因为做界面方便还算傻得可爱,听有人说用C++做数值计算而不屑于做界面可就对不起咱C++的恩人了.这我可要说道说道. 想当年C++刚出江湖,名门出身,自立门派,想抢Obje ...

  7. centOS7下安装GUI图形界面

    1.如何在centOS7下安装GUI图形界面 当你安装centOS7服务器版本的时候,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7 Gnome GUI包. 2.在系统下使用命 ...

  8. CentOS7安装GUI图形界面

    本文转自centOS7下安装GUI图形界面,侵权删. 1. 在命令行下 输入下面的命令来安装Gnome包. # yum groupinstall "GNOME Desktop" & ...

  9. CentOS7 下安装GUI图形界面GNOME

    在安装Gnome包之前,需要检查一下网络是否有网络(使用ping www.baidu.com) 一.先装X windows,-y表示参数同意所有软件安装操,当出现 Complete!说明这里安装成功了 ...

随机推荐

  1. poj1979 Red And Black(DFS)

    题目链接 http://poj.org/problem?id=1979 思路 floodfill问题,使用dfs解决 代码 #include <iostream> #include < ...

  2. Ionic Js九:列表操作

    列表是一个应用广泛在几乎所有移动app中的界面元素.ionList 和 ionItem 这两个指令还支持多种多样的交互模式,比如移除其中的某一项,拖动重新排序,滑动编辑等等. <ion-list ...

  3. thinkphp调整框架核心目录think的位置

    thinkphp的核心目录即框架文件可以放在项目之外的目录,这点手册上有提到,放在项目之外的地方可以方便其他项目共用一个框架文件. 在入口文件的index.php中,在导入框架目录这一行,可以直接修改 ...

  4. UVA - 120Stacks of Flapjacks (摊煎饼。。)排序

    /* 这题使我记起了以前很多忘掉的东西,例如sstream(分割流),deque(双端队列),还有众多函数(STL里的).值得收藏 值得注意的是这题的序号问题,(因为要求输出翻转的位置),序号从右往左 ...

  5. TRUNCATE can't with condition

    No, TRUNCATE is all or nothing. You can do a DELETE FROM <table> WHERE <conditions> but ...

  6. iOS 9应用开发教程之显示编辑文本标签文本框

    iOS 9应用开发教程之显示编辑文本标签文本框 ios9显示.编辑文本 在iOS,经常会看到一些文本的显示.文字就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些设备要表达的信息.本节将 ...

  7. python opencv3 视频文件的读写

    git: https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 读取视频文件 ...

  8. 决策树算法(Bagging与随机森林)

    Bagging算法: 将训练数据集进行N次Bootstrap采样得到N个训练数据子集,对每个子集使用相同的算法分别建立决策树,最终的分类(或回归)结果是N个决策树的结果的多数投票(或平均). 其中,B ...

  9. [JOISC2014]水筒

    OJ题号: BZOJ4242.AtCoder-JOISC2014E 题目大意: 给你一个h*w的网格图,每个格子可能是空地.障碍物和建筑物. 你只可以从空地上走过或者从建筑物中穿过. 建筑物总共有p个 ...

  10. 【POJ】1840:Eqs【哈希表】

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 18299   Accepted: 8933 Description ...