黑马程序员 GUI

原创 2013年12月02日 19:43:30

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

GUI

1:GUI
(1)用户图形界面。
(2)Java对GUI的支持。
java.awt 跟系统关联性较强,属于重量级。
javax.swing 跟系统关联性较弱,属于轻量级。
(3)GUI体系
组件:就是有很多方法和属性的对象。
|--容器组件 就是可以存储容器组件和基本组件的组件
|--基本组件 就是可以直接显示在容器上的组件
(4)案例:
第一个窗体案例
/*
 * Frame:
 * 		Frame():构造一个最初不可见的 Frame 新实例
 * 		查看完毕所有构造,我们发现窗体竟然不可见的。请问你想到什么?
 * 		它肯定有方法提供,让该窗体可见。
 */
public class MyFrame {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame();

		// 设置窗体标题
		// public void setTitle(String title)
		f.setTitle("Hello,GUI");
		// 设置窗体的坐标
		// public void setLocation(int x,int y)
		f.setLocation(400, 200);
		// 设置窗体大小
		// public void setSize(int width,int height)
		f.setSize(400, 300);

		// 设置窗体可见
		// public void setVisible(boolean b)
		f.setVisible(true);
		// System.out.println("over");
	}
}


对窗体案例进行关闭
public class MyFrame2 {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame();

		// 设置窗体属性
		f.setTitle("关闭窗口");
		f.setSize(400, 300);
		f.setLocation(400, 200);

		// 用适配器类改进版
		f.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		// 设置窗体可见
		f.setVisible(true);
	}
}



在窗体添加按钮,并对按钮添加事情
/*
 * 在窗体上添加一个按钮。并对按钮添加一个事件,实现点击按钮,就在控制台输出一句话:201314
 * 
 * 分析:
 * 		A:创建窗体对象
 * 		B:创建按钮对象
 * 		C:把按钮添加到窗体上
 * 		D:把窗体显示出来
 * 
 * 注意:
 * 		不是每一个事件接口都有对应的适配器类。如果接口中的方法少于三个的时候,是不需要的。
 */
public class MyButton {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame();
		// 设置属性
		f.setTitle("添加按钮");
		f.setSize(400, 300);
		f.setLocation(400, 200);
		// 重新设置窗体布局
		f.setLayout(new FlowLayout());

		// 创建按钮对象
		Button bu = new Button("我是按钮,点击试试");
		// bu.setSize(30, 20);

		// 把按钮添加到窗体上
		f.add(bu);

		// 注册事件
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		//对按钮添加事件
		bu.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println("201314");
			}
		});

		// 把窗体显示出来
		// 设置可见
		f.setVisible(true);
	}
}



在窗体上添加文本框和文本域

/*
 * 需求:把文本框的内容通过按钮点击显示到文本域中。
 */
public class MyText {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame();
		// 设置窗体属性
		f.setTitle("文本组件");
		f.setSize(400, 300);
		f.setLocation(400, 200);
		f.setLayout(new FlowLayout());

		// 创建文本框,按钮,文本域对象
		// TextField(int columns)
		final TextField tf = new TextField(20);
		Button bu = new Button("转到");
		final TextArea ta = new TextArea(12, 40);

		// 把文本框,按钮,文本域对象添加到窗体对象上
		f.add(tf);
		f.add(bu);
		f.add(ta);

		// 注册事件
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		bu.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 获取文本框的值
				// public String getText()
				String tf_str = tf.getText();
				// 清空操作
				tf.setText("");
				// 赋值给文本域
				// ta.setText(tf_str);
				// 我要追加数据,怎么办
				// void append(String str)
				ta.append(tf_str + "\r\n");
			}
		});

		// 显示窗体
		f.setVisible(true);
	}
}


菜单案例
/*
 * 菜单栏:MenuBar
 * 		菜单 Menu
 * 			菜单
 * 				菜单项
 * 			菜单项 MenuItem
 * 
 * 
 */
public class MyMenu {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame();
		f.setTitle("菜单案例");
		f.setSize(400, 300);
		f.setLocation(400, 200);

		// 创建菜单栏
		MenuBar mb = new MenuBar();
		// 创建菜单
		Menu m = new Menu("文件");
		// 创建菜单项
		MenuItem mi = new MenuItem("退出");
		// 谁添加谁?
		m.add(mi);
		mb.add(m);
		f.setMenuBar(mb);

		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		mi.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		// 设置窗体可见
		f.setVisible(true);
	}
}



多级菜单案例

/*
 * 1个Frame
 * 1个MenuBar
 * 2个Menu
 * 5个MenuItem
 */
public class MyMenu2 {
	public static void main(String[] args) {
		final Frame f = new Frame();
		f.setTitle("多级菜单");
		f.setSize(400, 300);
		f.setLocation(300, 200);
		final String name = f.getTitle();

		MenuBar mb = new MenuBar();

		Menu m1 = new Menu("文件");
		Menu m2 = new Menu("更改标题 ");

		final MenuItem mi1 = new MenuItem("好好学习");
		final MenuItem mi2 = new MenuItem("天天向上");
		MenuItem mi3 = new MenuItem("恢复标题");
		MenuItem mi4 = new MenuItem("打开记事本");
		MenuItem mi5 = new MenuItem("退出系统");

		m2.add(mi1);
		m2.add(mi2);
		m2.add(mi3);

		m1.add(m2);
		m1.add(mi4);
		m1.add(mi5);

		mb.add(m1);

		f.setMenuBar(mb);

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

		mi5.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		mi4.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 打开系统的记事本
				// public static Runtime getRuntime()
				Runtime r = Runtime.getRuntime();
				// public Process exec(String command)
				try {
					r.exec("notepad");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		
		mi1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				f.setTitle(mi1.getLabel());
			}
		});
		
		mi2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				f.setTitle(mi2.getLabel());
			}
		});
		
		mi3.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				f.setTitle(name);
			}
		});

		f.setVisible(true);
	}
}


(5)事件监听机制(理解)
A:事件源 事件发生的地方
B:事件 要发生的事情
C:事件处理 针对发生的事情的处理
D:事件监听 把事件源和事件进行关联
(6)适配器模式
如果接口中的方法较多,而我们有可能只使用其中的一个。
那么,我们就可以在在接口和具体的类之间插入一个适配器类。
做一次转换即可。


适配器类实现接口,把所有方法全部空实现。
具体的类继承适配器类,用哪个方法,重写哪个。



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

黑马程序员--Spring框架方方面面之…

--------
  • li951418089
  • li951418089
  • 2015年12月24日 10:25
  • 616

黑马程序员--Oracle学习_day06

----------  android培训 、java培训、期待与您交流! ---------- 学习目标:1,理解oracle的pl/sql的概念   2,掌握pl/sql编程技术(...
  • xpaibeyond
  • xpaibeyond
  • 2015年01月16日 14:28
  • 222

黑马程序员骗局

最近看到网上的一篇帖子:“传智播客旗下黑马程序员就业骗局,企业封杀遇到了骗子培训” 。    黑马程序员面对诋毁,诽谤,真的想置之不理,让谣言自生自灭。看看那篇帖子的发布时间大概在2013年或者2...
  • itcast_cn
  • itcast_cn
  • 2016年09月05日 15:22
  • 3400

黑马程序员:Java学习路线大揭秘连载2-JavaWeb篇!

编程语言Java,已经21岁了。从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的。Java应用的广泛已...
  • itcast_cn
  • itcast_cn
  • 2016年10月18日 17:44
  • 1485

黑马程序员——Gui

1、创建图形化界面: 1.1,创建frame窗体。 1.2,对窗体进行基本设置。 比如大小,位置,布局。 1.3,定义组件。 1.4,将组件通过窗体的add方法添加到窗体中。 1.5,让窗...
  • sinat_31516053
  • sinat_31516053
  • 2015年10月14日 00:28
  • 161

黑马程序员——GUI

------- android培训、java培训、期待与您交流! ----------   GUI Graphical User Interface(图形用户接口)。 用图形的方式,来显示计算机操作...
  • u012865586
  • u012865586
  • 2013年12月28日 23:56
  • 290

黑马程序员----GUI

--------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 13、GUI ...
  • u011045065
  • u011045065
  • 2013年07月01日 03:34
  • 501

黑马程序员——网络爬虫

------- android培训、java培训、期待与您交流! ----------
  • yonggandeyangguang
  • yonggandeyangguang
  • 2014年09月24日 12:14
  • 255

黑马程序员-java就业面试题大全(持续更新)

1、一个"java"源文件中是否可以包含多个类()?
  • zj3911507
  • zj3911507
  • 2014年06月20日 16:32
  • 1953

黑马程序员_GUI

------ android培训、java培训、java学习型技术博客、期待与您交流! ----------           图形化界面 1 概念:     GUI是Graphical ...
  • u010503207
  • u010503207
  • 2013年09月20日 16:18
  • 431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员 GUI
举报原因:
原因补充:

(最多只允许输入30个字)