java之 22天 GUI 图形界面编程(一)

转自:http://takeme.iteye.com/blog/1876850

GUI(图形用户界面)

Java代码

  1 import java.awt.Button;
  2 import java.awt.FlowLayout;
  3 import java.awt.Frame;
  4 import java.awt.event.WindowAdapter;
  5 import java.awt.event.WindowEvent;
  6
  7 /**
  8  * GUI(图形用户界面)
  9  *  Graphical User Interface(图形用户接口)
 10  *  用图形的方式,来显示计算机操作的界面,这样更方便更直观.
 11  *
 12  * CLI
 13  *  Command Line User Interface(命令行用户接口)
 14  *  就是常用的Dos命令行操作.
 15  *  需要记忆一些常用的命令.操作更直观.
 16  *
 17  * 举例:
 18  *   比如:创建文件夹,或者删除文件夹等
 19  *   md haha   del haha
 20  *
 21  *
 22  * Java的GUI提供的对象都存在 java.Awt 和 javax.Swing 两个包中.
 23  *
 24  * java.Awt:Abstract Window ToolKit(抽象 窗口工具包)
 25  *    需要调用本地系统方法实现功能.属重量级控件 (跨平台不够强)
 26  *
 27  * java.Swing:在AWT的基础上,建立的一套图形界面系统,器重提供了更多的组件,
 28  *   而且完全由java实现,增强了移植性,属于轻量级控件.(跨平台很好)
 29  *
 30  * java.swt: IBM 公司开发 Eclipse 用的组件工具 可以Eclipse网站下载后就可以使用了.
 31  *
 32  *
 33  * 布局管理器
 34  * 1)容器中的组件的排放方式,就是布局.
 35  * 2)常见的布局管理器
 36  *   FlowLayout(流式布局管理器)
 37  *     从左到右的顺序排列
 38  *     Panel默认的布局管理器
 39  *   BorderLayout(辩解布局管理器)
 40  *     东  南  西  北   中
 41  *     Frame 默认的布局管理器
 42  *     不指定布局方式,默认 满屏覆盖,在添加一个 也是 满屏覆盖
 43  *   GridLayout (网格布局管理器)
 44  *     规则的矩阵
 45  *   CardLayout  (卡片布局管理器)
 46  *     选项卡
 47  *   GridBagLayout(网格包布局管理器)
 48  *    非规则的矩阵
 49  *
 50  * 事件监听机制组成
 51  *  事件源:
 52  *  事件:Event
 53  *  监听器:Listener
 54  *  时间处理:(引发事件后处理方式)
 55  *
 56  *  事件源:就是awt包或者swing包中的那些图像界面组件.
 57  *  事件:每个事件源都有自己特定的对应时间和共性时间.
 58  *  监听器:可以出发某一个事件的动作都已经封装到监听器中.
 59  */
 60
 61
 62 public class GuiDemo {
 63     public static void main(String[] args) {
 64         Frame f=new Frame("my awt");
 65         f.setSize(500,400);
 66         f.setLocation(300,200);
 67         f.setLayout(new FlowLayout());
 68
 69         Button b=new Button("我是一个按钮");
 70
 71         f.add(b);
 72
 73         f.addWindowListener(new MyWin());
 74
 75         f.setVisible(true);
 76         System.out.println("Hello world!");
 77     }
 78
 79 }
 80
 81 //因为接口WindowLinstener中的所有方法都被子类 WindowAdapter实现了,.
 82 //并且覆盖了其中的所有方法,那么我们只能继承 WindowAdapter 覆盖我们的方法即可
 83 class MyWin extends WindowAdapter{
 84
 85     @Override
 86     public void windowClosing(WindowEvent e) {
 87         // TODO Auto-generated method stub
 88         //System.out.println("Window closing"+e.toString());
 89         System.out.println("我关了");
 90         System.exit(0);
 91     }
 92     @Override
 93     public void windowActivated(WindowEvent e) {
 94         //每次获得焦点 就会触发
 95         System.out.println("我活了");
 96         //super.windowActivated(e);
 97     }
 98     @Override
 99     public void windowOpened(WindowEvent e) {
100         // TODO Auto-generated method stub
101         System.out.println("我开了");
102         //super.windowOpened(e);
103     }
104
105 }  

简单Frame

Java代码

 1 import java.awt.Button;
 2 import java.awt.FlowLayout;
 3 import java.awt.Frame;
 4 import java.awt.event.ActionEvent;
 5 import java.awt.event.ActionListener;
 6 import java.awt.event.WindowAdapter;
 7 import java.awt.event.WindowEvent;
 8
 9 public class FrameDemo {
10
11     //定义该图像中所需要的组件的引用
12     private Frame f;
13     private Button but;
14
15     FrameDemo(){
16         init();
17
18     }
19
20     public void init(){
21
22         f=new Frame("my freame");
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         //加载一下窗体上的事件.
31         myEvent();
32         //显示窗体
33         f.setVisible(true);
34     }
35     private void myEvent(){
36         f.addWindowListener(new WindowAdapter(){
37             @Override
38             public void windowClosing(WindowEvent e) {
39                 // TODO Auto-generated method stub
40                 //super.windowClosing(e);
41                 System.exit(0);
42             }
43         });
44
45         //让按钮具备退出程序的功能
46         /*
47          * 按钮就是事件源
48          * 那么选择那个监听器呢?
49          * 通过关闭窗体实例了解到,下个要知道那个组件具备什么样的特有监听器,
50          * 需要查看该组件对象的功能.
51          */
52         //添加一个活动监听
53         but.addActionListener(new ActionListener() {
54
55             @Override
56             public void actionPerformed(ActionEvent e) {
57                 // TODO Auto-generated method stub
58                 System.out.println("退出, 按钮干的");
59                 System.exit(0);
60             }
61         });
62
63     }
64
65     public static void main(String[] args) {
66         FrameDemo f=new FrameDemo();
67     }
68
69 }  

键盘和鼠标事件

Java代码

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

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

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

转自:http://takeme.iteye.com/blog/1876853 模拟window开打文件 Java代码 1 import java.awt.Button; 2 import java.awt.Dialog; 3 import java.awt.FlowLayout; 4 import java.awt.Frame; 5 import java.awt.Label; 6 import java.awt.TextArea; 7 import java.awt.TextField; 8

GUI图形界面编程之事件处理机制

事件处理机制三要素: 事件源:能够产生事件的组件 事件:用户对组件的一个操作 事件监听器:接收事件.解释事件并处理用户交互的方法处理事件源发生的事件 事件处理机制:当组件(比如 Button)被点击时就会产生ActionEvent事件,事件被传递给一个 ActionListener 对象,再由ActionListener 定义的方法来响应处理事件(自动调用ActionEvent) 当事件发生后,将某事件的对象传递给事件监听器(事件监听器实现了发生此事件所对应的接口),事件监听器会处理此事件,为了

Java图形界面编程

一:基本概念 AWT(Abstract Window Toolkit) 抽象窗口工具包,SUN 公司提供的用于图形界面编程(GUI)的类库.但是AWT得实现严重依赖于下层操作系统,所以导致组件AWT的外观取决于程序运行的平台.AWT的类和接口都定义在java.awt包中. Swing    Swing组件是实在AWT基础上开发的新型GUI组件,它是纯Java实现的轻量级(light-weight)组件,它不依赖任何特定平台,Swing组件在不同平台具有一致性的表现,但是Swing应用程序的界面外

java进阶08 GUI图形界面

图形化用户界面(GUI) 简而言之,就是可视化编程. 要想实现可视化界面(窗口),需要用到JFrame类. package Frame; public class JFrame1 { public static void main(String[] args){ UI ui=new UI(); } } 先建一个主函数,而主函数中的操作只有一句代码.这样做,既能直观又方便后期修改. 接下来是UI类的实现 package Frame; import javax.swing.JFrame; publi

java进阶09 GUI图形界面 布局管理器之BorderLayout

前面虽然实现了窗口,但是一般的应用有很多其他东西,如按钮,输入框之类的. 而这些都是建立在一个东西上面的,那就是布局管理器. 常用的布局管理器有3个 BorderLayout:边界布局管理器 FlowLayout:流式布局管理器 GridLayout:网格布局管理器 今天先说说BorderLayout 我们先修改下UI类,这次是最后一次修改,这次会将UI类与管理器和控件彻底分开,再也不用操作UI类 package Frame; import javax.swing.JFrame; public

多线程编程、Java I/O系统和Java图形界面编程

多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同一个进程中的所有线程都在同一内存空间工作,这些线程可以共享同一块内存和系统资源. 线程的创建: 1)通过继承Thread类来创建线程: ①创建一个继承Thread类的类: ②在创建的Thread子类中重写run()方法,在方法中写入想要线程运行的代码: ③创建Thread子类的实例: ④通过调用该实

java进阶10 GUI图形界面 布局管理器之FlowLayout GridLayout

先说说FlowLayout 流式布局管理器. 效果 这是当第一行显示不下,才转到第二行的. 看看代码 package Frame; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class MyLayout{ JFrame frame; public MyLayout(JFrame frame) { //

Java中的图形界面编程

前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗口工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些特定功能 一个容器可以包涵多个组件,组件必须存放在容器中 3.布局管理器:实现容器的布局设置 4.图形类:包括一些基本图形 Swing是AWT的一个轻量级框架 java.lang.Object java.awt.Component java.awt.Container java.awt.Window

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

GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Linux,还支持所有类型的Unix和Windows.Qt良好的封装机制使模块化程度非常高,可重用性强. 桌面KDE使用Qt开发 Qt使用C++作为其开发语言,而更多的Linux下的开发者用C,GTK+使用C语言开发.基于LGPL授权,所以,GTK+是开源的. 桌面GNOME基于GTK+开发