转: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
- 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();
- }
- }