java之GUI窗口实现

GUI(如何创建一个窗口并显示)
* Graphical User Interface(图形用户接口)。

        Frame  f = new Frame(“my window”);
        f.setLayout(new FlowLayout());//设置布局管理器
        f.setSize(500,400);//设置窗体大小
        f.setLocation(300,200);//设置窗体出现在屏幕的位置
        f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));
        f.setVisible(true);

GUI(布局管理器)
* FlowLayout(流式布局管理器)
    * 从左到右的顺序排列。
    * Panel默认的布局管理器。
* BorderLayout(边界布局管理器)
    * 东,南,西,北,中
    * Frame默认的布局管理器。
* GridLayout(网格布局管理器)
    * 规则的矩阵
* CardLayout(卡片布局管理器)
    * 选项卡
* GridBagLayout(网格包布局管理器)
    * 非规则的矩阵
GUI(窗体监听)
    Frame f = new Frame("我的窗体");
    //事件源是窗体,把监听器注册到事件源上
    //事件对象传递给监听器
    f.addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                         //退出虚拟机,关闭窗口
            System.exit(0);
        }
    });

GUI(鼠标监听)
GUI(键盘监听和键盘事件)
GUI(动作监听)
GUI(需要知道的) 
* 事件处理
    * 事件: 用户的一个操作
    * 事件源: 被操作的组件
    * 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法

package com.heima.gui;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
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;
import java.awt.event.WindowListener;

public class Demo1_Frame {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Frame f = new Frame("我的第一个窗口");
		f.setSize(400, 600);							//设置窗体大小
		f.setLocation(500, 50);							//设置窗体位置
		f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));
		Button b1 = new Button("按钮一");
		Button b2 = new Button("按钮二");
		f.add(b1);
		f.add(b2);
		f.setLayout(new FlowLayout());					//设置布局管理器
		//f.addWindowListener(new MyWindowAdapter());
		f.addWindowListener(new WindowAdapter() {   //实现一些功能都是加的监听事件
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		b1.addMouseListener(new MouseAdapter() {
			/*@Override
			public void mouseClicked(MouseEvent e) {	//单击
				System.exit(0);
			}*/
			@Override
			public void mouseReleased(MouseEvent e) {	//释放
				System.exit(0);
			}
		});
		
		b1.addKeyListener(new KeyAdapter() {
			@Override
			public void keyReleased(KeyEvent e) {//e.getKeyCode()获取键盘的哪个键,api文档都有
				//System.exit(0);
				//System.out.println(e.getKeyCode());
				//if(e.getKeyCode() == 32) {
				if(e.getKeyCode() == KeyEvent.VK_SPACE){
					System.exit(0);
				}
			}
		});
		
		b2.addActionListener(new ActionListener() {		//添加动作监听,应用场景就是暂停视频和播放视频
			
			@Override
			public void actionPerformed(ActionEvent e) {  //按空格和鼠标左键都会关闭窗口
				System.exit(0);
			}
		});
		f.setVisible(true);								//设置窗体可见
	}

}
//就想实现一个关闭窗口实现接口的话还得重写这么多没用的方法
/*class MyWindowListener implements WindowListener {  

	@Override
	public void windowOpened(WindowEvent e) {
	}

	@Override
	public void windowClosing(WindowEvent e) {
		System.exit(0);
	}

	@Override
	public void windowClosed(WindowEvent e) {
		System.out.println("Closed");
	}

	@Override
	public void windowIconified(WindowEvent e) {
	}

	@Override
	public void windowDeiconified(WindowEvent e) {
	}

	@Override
	public void windowActivated(WindowEvent e) {
	}

	@Override
	public void windowDeactivated(WindowEvent e) {
	}
	
}
*/
//直接继承WindowAdapter就可以了,这个抽象类实现了上面的接口,
//里面的方法都是空的,为的就是需要哪个方法重写哪个
/*class MyWindowAdapter extends WindowAdapter {
	@Override
	public void windowClosing(WindowEvent e) {
		System.exit(0);
	}
}*/

猜你喜欢

转载自blog.csdn.net/kxj19980524/article/details/86572165