zoukankan      html  css  js  c++  java
  • JAVA学习课第五十八届 — GUI

    GUI

    Graghical User Interface(图形用户接口)

    java为GUI提供的对象都存在java.awt和java.swing包中


    Java的GUI做的的确干只是C++等。不打算浪费过多的时间在这上面

    一个简单的窗口演示

    public static void main(String[] args){
    		
    		Frame f = new Frame("新窗口");
    		f.setLocation(400, 200);//设置窗口的位置
    	
    		f.setSize(500, 400);//设置窗口大小	
    		//f.setBounds(400, 200, 500, 400);功能相当于上面两句
    		f.setLayout(new FlowLayout());//设置 流式 布局
    		Button bt = new Button("一个button");
    		f.add(bt);
    		f.setVisible(true);//显示窗口
    	}

    显示出窗口后发现无法关闭窗口,就用到了事件监听机制

    其组成:事件源(组件)、事件(Event)、监听器(Listener)、事件处理(引发事件后处理方式)

     

    	public static void main(String[] args){
    		
    		Frame f = new Frame("新窗口");
    		f.setLocation(400, 200);//设置窗口的位置
    	
    		f.setSize(500, 400);//设置窗口大小	
    		//f.setBounds(400, 200, 500, 400);功能相当于上面两句
    		f.setLayout(new FlowLayout());//设置 流式 布局
    		Button bt = new Button("一个button");
    		f.add(bt);
    		
    		//由于关不掉这一事件。 要注冊一个监听器
    		//窗口适配器类WindowAdapter,已经覆盖了全部方法,便捷于创建监听器
    		f.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e){
    				System.exit(0);
    			}
    		});//加入窗口监听
    
    		f.setVisible(true);//显示窗口
    		
    	}

    用户对组件操作。就是一个事件。那么产生事件的组件就是事件源。

    ActionListener演示:

    public static void main(String[] args){
    		
    		Frame f = new Frame("新窗口");
    		f.setLocation(400, 200);//设置窗口的位置
    	
    		f.setSize(500, 400);//设置窗口大小	
    		//f.setBounds(400, 200, 500, 400);功能相当于上面两句
    		f.setLayout(new FlowLayout());//设置 流式 布局
    		Button bt = new Button("一个button");
    		f.add(bt);
    		
    		//由于关不掉这一事件, 要注冊一个监听器
    		//窗口适配器类WindowAdapter,已经覆盖了全部方法,便捷于创建监听器
    		f.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e){
    				System.exit(0);
    			}
    		});//加入窗口监听
    		
    		//在button上加入一个监听事件:点击一下退出
    		
    		bt.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    
    				//System.out.println("按了");
    				System.exit(0);
    			}
    		});
    		
    		f.setVisible(true);//显示窗口
    		
    	}

    键盘和鼠标监听事件

    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.TextField;
    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 Main {
    
    	private Frame f;
    	private TextField tf;//文本框
    	private Button bt;
    	public Main(){
    		init();
    	}
    	private void init(){
    		f = new Frame("鼠标和键盘监听");
    		bt = new Button("button");
    		f.setBounds(400, 200, 500, 400);
    		f.setLayout(new FlowLayout());
    		tf = new TextField(40);//指定列数
    		f.add(tf);
    		f.add(bt);
    		myEvent();
    		f.setVisible(true);
    	}
    	
    	private void myEvent(){
    		//给文本框加入键盘监听
    		tf.addKeyListener(new KeyAdapter() {
    
    			@Override
    			public void keyPressed(KeyEvent e) {//按下
    			
    				
    	//System.out.println("key Pressed : "+e.getKeyChar()+" : "+e.getKeyCode()+" : "+e.getKeyText(e.getKeyCode()));//按下即打印
    			/*	int code = e.getKeyCode();
    				if(!(code>=KeyEvent.VK_0 && code <= KeyEvent.VK_9))//推断
    					{
    						System.out.println("必须数字");
    						e.consume();//使用。不会依照默认的事件处理方式
    					}
    				if(e.getKeyCode()==KeyEvent.VK_ENTER){//按下回车
    					System.out.println("enter.....");
    				}
    				*/
    				if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){//按下Ctrl+回车
    					System.out.println("Crtl enter.....");
    				}
    			}
    			
    		});
    		//在窗口上加入退出监听器
    		f.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e){
    				System.exit(0);
    			}
    		});
    		
    		//在button上加入鼠标监听器
    		bt.addMouseListener(new MouseAdapter() {
    			
    			private int count = 1;//计数器
    			
    			public void mouseEntered(MouseEvent e) {//鼠标碰到即触发
    
    				tf.setText("mouse enter : "+count++);//信息加入到文本框
    				
    			}
    			public void mouseClicked(MouseEvent e) {//点击
    				if(e.getClickCount()==2){//得到点击次数,双击	
    					System.out.println("mouseClicked Double click");
    				}
    				/*else if(e.getClickCount()==1){
    					System.out.println("mouseClicked only click");
    				}*/
    				}
    			});
    		}
    	public static void main(String[] args){
    		new Main();
    	
    	}
    }

    关于Swing包中的。须要在Ecplice安装插件。


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    [BUUCTF]REVERSE——rsa
    windows下python3.7安装gmpy2、Crypto 库及rsa
    [BUUCTF]PWN——wustctf2020_getshell1/2
    [BUUCTF]PWN——bbys_tu_2016
    [BUUCTF]PWN——xdctf2015_pwn200
    [BUUCTF]REVERSE——[GXYCTF2019]luck_guy
    [BUUCTF]REVERSE——简单注册器
    [BUUCTF]PWN——pwnable_orw
    [BUUCTF]REVERSE——findit
    [BUUCTF]PWN——jarvisoj_level1
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4906248.html
Copyright © 2011-2022 走看看