天天看点

黑马程序员_基础_GUI

-------android培训、java培训、期待与您交流!----------

1、GUI概述

GUI:Graphical User Interface(图形用户接口)。用图形的方式,来显示计算机操作的界面,这样更方便更直观。

CLI:Command line User Interface(命令行用户接口)。就是常见的Dos命令操作,需要记忆一些常用的命令,操作不直观。

Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。

java.Awt: Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件。

javax.Swing: 在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全有Java实现。增强了移植性,属轻量级控件。

GUI组件继承关系图:

黑马程序员_基础_GUI

其中Container为容器,是一个特殊的组件,该组件可以通过add方法添加其他组件进来。

2、简单Frame创建演示

下面为创建代码及相关说明:

/*
	 * 创建图形化界面:
	 * 1、创建frame窗体。
	 * 2、对窗体进行基本设置:比如大小、位置、布局等等。
	 * 3、定义组件。
	 * 4、将组件通过窗体的add方法添加到窗体中
	 * 5、让窗体显示,通过setVisible(true)方法
	 */
	//简单Frame演示
	public static void frame(){
		
		Frame f = new Frame("my awt");	//new之后默认使用边界布局
		f.setVisible(true);		//设置窗体可见
		f.setSize(500, 300);	//设置窗体大小,单位为px
		f.setLocation(300, 100);	//设置窗体位置,第一个参数表示距左边300px,第二个参数表示距顶部100px
		f.setLayout(new FlowLayout());		//设置为流式布局
		
		Button b = new Button("我是一个按钮");
		f.add(b);	//将button添加到frame中
	}
           

图形界面效果:

黑马程序员_基础_GUI

3、窗体事件

class FrameDemo{
	
	private Frame f;
	private Button b;
	
	public FrameDemo(){
		init();
	}
	
	public void init(){
		
		f = new Frame("my frame");
		
		//对frame进行基本设置
		f.setBounds(300, 100, 600, 500);
		f.setLayout(new FlowLayout());
		
		b = new Button("my button");
		f.add(b);	//将组件添加到frame中
		
		myEvent();	//加载一下窗体上事件
		f.setVisible(true);	//显示窗体
		
	}
	
	private void myEvent(){
		
		f.addWindowListener(new WindowAdapter(){	//监听关闭按钮
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
		//让按钮具备退出程序的功能,按钮就是事件源。
		//通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器。需要查看该组件对象的功能。
		//通过查阅API,发现按钮支持一个特有监听addActionListener
		b.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.exit(0);
			}
		});
	}
}
           

4、鼠标键盘事件

class MouseKeyBoardDemo{	//鼠标键盘事件
	
	private Frame f;
	private Button b;
	private TextField tf;
	
	public MouseKeyBoardDemo(){
		init();
	}
	
	public void init(){
		
		f = new Frame("my frame");
		
		//对frame进行基本设置
		f.setBounds(300, 100, 600, 500);
		f.setLayout(new FlowLayout());
		
		b = new Button("my button");
		tf = new TextField(10);		//10列
		f.add(tf);		//将文本框添加到窗体中
		f.add(b);	//将组件添加到frame中
		
		myEvent();	//加载一下窗体上事件
		f.setVisible(true);	//显示窗体
		
	}
	
	private void myEvent(){
		
		f.addWindowListener(new WindowAdapter(){	//监听关闭按钮
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
		b.addActionListener(new ActionListener(){	//添加action监听
			public void actionPerformed(ActionEvent e){
				P.rintln("action ok");
			}
		});
		
		b.addMouseListener(new MouseAdapter(){		//添加鼠标监听
			private int count = 1;
			private int clickCount = 1;
			
			public void mouseEntered(MouseEvent e){
				P.rintln("鼠标第" + count++ + "次进入到按钮");
			}
			
			public void mouseClicked(MouseEvent e){
				P.rintln("鼠标第" + clickCount++ + "次点击按钮");
				if(e.getClickCount() == 2){
					P.rintln("双击动作");
				}
			}
		});
		
		b.addKeyListener(new KeyAdapter(){	//给按钮添加键盘监听
			public void keyPressed(KeyEvent event){
				
				P.rintln(event.getKeyChar() + "..." + event.getKeyCode());
				P.rintln(KeyEvent.getKeyText(event.getKeyCode()));
				
				if(event.getKeyCode() == KeyEvent.VK_ESCAPE){	//按Esc键退出
					System.exit(0);
				}
				
				if(event.isControlDown() && event.getKeyCode() == KeyEvent.VK_ENTER){	//按Conrol+Enter键退出
					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) || code == KeyEvent.VK_BACK_SPACE){}
				else{
					P.rintln(code + "是非法的");
					e.consume();
				}
			}
		});
	}
}
           

5、练习-列出指定目录内容