黑马程序员——GUI

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

(一)GUI概述

GUI( Graphical User Interface):图形用户接口,用图形的方式,来显示计算机操作的界面,这样更方便更直观。
      •GUI编程通常为桌面应用编程,不用于WEB编程。

CLI( Command L ine User Interface) :命令行用户接口)就是常见的DOS命令行操作。需要记忆一些常用的命令,操作不直观。
      AWT与swing:
          •AWT(AbstractWindow ToolKit): 抽象窗口工具包。
                -不属于扩展包。
                -需要调用本地系统方法实现功能。
                -依赖于本地。
                -属重量级控件。
         •swing:javax扩展工具包。
                -属于扩展包。
                -在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。
                -增强了移植性。
                -属轻量级控件。
GUI继承体系


      在GUI当中一切均为组件。
          •左侧为容器组件
          •右侧为具体内容组件(基本组件)
(二)容器与内容

        容器与内容:
          •所有GUI画面均由容器与内容组成。
          •容器内可以包含容器。
          容器内可以包含基本组件。

容器类

    主要容器为Container:
          •Window窗口,单独窗体容器。可以单独使用。
              -Frame:基本窗体框架。
              -Dialog:对话框。
          •Panel :面板容器。无法单独使用。存在于其他容器当中。
          •Frame为例,完成窗体创建步骤:
              -第一步:创建窗体对象
              -第二步:设置窗体属性
              -第三步:让窗体可见
          •创建窗体对象方法:
              -public Frame()throws HeadlessException
              -public Frame(String title)throws HeadlessException
          •设置窗体可见方法:
              -public void setVisible(boolean b)
              -public void show()  已过时
设置窗体属性方法
          •设置窗体属性方法:
              -public voidsetResizable(boolean resizable) 设置是否由用户调节窗体大小
              -public voidsetTitle(String title) 设置窗体标题,注意与设置名称不同。名称为组件在代码中的名称。并非显示出来。
              -public void setSize(int width, int height) 设置窗体尺寸
              -public void setSize(Dimension d) 设置窗体尺寸
              -Dimension:尺寸抽象类
                   -public Dimension(int width, int height)创建尺寸对象
                   -public void setSize(int width, int height) 设置尺寸对象尺寸
                   -public double getHeight()返回高
                   -public double getWidth()返回宽
              -public void setLocation(int x,int y) 设置窗体起始位置
              -public void setLocation(Point p)设置窗体起始位置
                   -Point类:类比Dimension类
              -public void setBackground(Color c) 设置组件背景颜色
                  -Color类:类比Dimension类
              -public void setIconImage(Image image)设置title小图标
                   -Image:了解Toolkit类(awt工具包)
                   -public static Toolkit getDefaultToolkit() 获取工具包对象
                   -public abstract Image getImage(String filename) 获取图片
              -public void setLayout(LayoutManager mgr)设置布局方式
                   -LayoutManager:不同的布局管理器,使用不同的子类对象
                                            布局即组件的排列方式。
                   -FlowLayout(流式布局管理器)
                                           它是Panel默认的布局管理器。
                   -BorderLayout(边界布局管理器)
                                           它是Frame默认的布局管理器。
                   -GridLayout(网格布局管理器)
                   -GridBagLayout(网格包布局管理器)
                   -CardLayout(卡片布局管理器)
          容器添加组件方法
                   -public Component add(Component comp)
                   -public void setMenuBar(MenuBar mb)
          组件获取焦点方法
                   -public void requestFocus()

基本组件:

    大部分组件设置方式类似窗体属性设置。
    主要基本组件:
         •Button:按钮
         •Checkbox:复选框
         •Choice:单选框
         •TextComponent:
               -TextArea:文本域
               -TextField:文本框(宽度设置为public TextField(int columns))
菜单组件:

            
事件监听机制:
针对于某个组件完成对应的事件监听,当用户完成了对应的事件则触发执行对应代码。
    •事件监听机制组成:
          -事件源:被监听的组件
          -事件:具体的用户动作事件
          -监听器:用来监听事件源(大量使用了适配器模式)
          -事件处理:处理事件的代码
                        
    •frame窗体监听:
           -public void addWindowListener(WindowListener l)窗体事件
                      -WindowListener/WindowAdapter方法:
                      -void windowClosing(WindowEvent e)关闭窗口时调用方法
           -public voidaddKeyListener(KeyListener l) 键盘事件
                      -KeyListener方法:
                      -void keyPressed(KeyEvent e) 按下某按键时调用方法
                      -KeyEvent:键盘事件抽象类
                                 -public char getKeyChar()获取按下的字符
                                 -public void consume() 反悔事件默认的处理
           -类比学习publicvoid addMouseListener(MouseListener l)鼠标事件
           -类比学习publicvoid addFocusListener(FocusListener l)焦点事件
按钮监听:
           -类比学习Button:public void addActionListener(ActionListener l)按钮动作事件

(三)练习

/*
 * Frame:窗口
 * public Frame() throws HeadlessException  创建窗口,最初不可见
 * public Frame(String title) throws HeadlessException  指定标题创建窗口,最初不可见
 * public void show() 显示窗口
 * public void setVisible(boolean b)  设置窗体可见
 * 
 * public void setResizable(boolean resizable) 设置此窗体是否可由用户调整大小。 
 * public void setTitle(String title)  设置窗体titile
 * public void setSize(int width, int height)  指定窗体大小  int:像素单位   1366*768
 * public void setLocation(int x, int y)  指定窗体的位置
 */
public class Demo01 {

	public static void main(String[] args) {
		
		//创建窗体对象
		Frame frame = new Frame("我是Title");
		
		//设置窗体属性
		frame.setResizable(true);
		frame.setTitle("唐嫣欢迎您!");
		frame.setSize(600,400);
		frame.setLocation(400, 200);
		
		frame.setVisible(true);
		
	}
}

/*
 * Frame:窗口
 * 
 * public void setSize(Dimension d) 调整组件的大小
 * Dimension:尺寸
 * public void setLocation(Point p) 调整窗体位置
 * Point:像素点
 * public void setBackground(Color c)  设置背景颜色
 * Color: 颜色   
 * 		构造:分为  红  绿   蓝    整数0-255    小数0-1
 * 
 * public void setIconImage(Image image)  设置要作为此窗口图标显示的图像。 
 * Image:图片
 * public abstract Image createImage(String filename)  返回一个图片对象
 * Toolkit:工具类
 * public static Toolkit getDefaultToolkit()  返回默认工具包对象
 */
public class Demo02 {

	public static void main(String[] args) {
		
		//创建窗体对象
		Frame frame = new Frame("唐嫣欢迎您!");
		
		//设置窗体属性
		
		Dimension d = new Dimension(600, 400);
		frame.setSize(d);
		
		Point p = new Point(400, 200);
		frame.setLocation(p);
		
		Color c = new Color(255, 255, 0);
		frame.setBackground(c);
		
		Toolkit tk = Toolkit.getDefaultToolkit();
		Image i = tk.createImage("传智纪录片.jpg");
		frame.setIconImage(i);
		
		frame.setVisible(true);
		
	}
}
/*
 * 
 * 向容器中添加组件
 * public Component add(Component comp)  添加组件
 * Button:按钮组件
 * 
 * 设置窗体布局
 * public void setLayout(LayoutManager mgr)
 * 
 * LayoutManager:布局的接口
 * 
 * BorderLayout:边框布局.使其符合下列五个区域:北、南、东、西、中。  默认布局
 * FlowLayout:流式布局
 */
public class Demo03_layout {

	public static void main(String[] args) {
		
		//创建窗体对象
		Frame frame = new Frame("唐嫣欢迎您!");
		
		//向窗体中添加组件
		Button btn = new Button("我是小嫣,你看到了吧!~");
		Button btn2 = new Button("我是嫣嫣,你看到了吧!~");
		Button btn3 = new Button("我是嫣,你看到了吧!~");
		Button btn4 = new Button("我是小小嫣,你看到了吧!~");
		Button btn5 = new Button("我是嫣嫣嫣,你看到了吧!~");
		
	
		frame.add(btn);
		frame.add(btn2);
		frame.add(btn3);
		frame.add(btn4);
		frame.add(btn5);
		
		//设置窗体属性
		frame.setSize(600,400);
		frame.setLocation(400, 200);
		
		//设置窗体布局
		//默认边框布局
		frame.setLayout(new FlowLayout());
		
		//让窗体可见
		frame.setVisible(true);
		
	}

}
/*
 * 事件监听:
 * 		事件源:被监听的组件
 * 		事件:具体的用户动作事件
 * 		监听器:用来监听事件源
 * 		事件处理:处理事件的代码
 * 
 * 将监听器与组件关联:
 * 		public void addWindowListener(WindowListener l)  添加窗体监听器
 *      public void addKeyListener(KeyListener l)  键盘监听器
 *      public void addMouseListener(MouseListener l) 鼠标监听器
 * 
 * 监听器:
 * 		WindowListener:用于接收窗口事件的侦听器接口。
 * 		WindowAdapter: 接收窗口事件的抽象适配器类。
 */
public class Demo04_Listener {

	public static void main(String[] args) {
		//创建窗体对象
		Frame frame = new Frame("唐嫣欢迎您!");
		
		//设置窗体属性
		frame.setSize(600,400);
		frame.setLocation(400, 200);
		
		//添加监听器
		//使用适配器完成事件监听
		frame.addWindowListener(new WindowAdapter() {

			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("我关了!");
				System.exit(0);
			}
			
		});
		
		
		//让窗体可见
		frame.setVisible(true);
		
	}

}
/*
 * Menu:菜单
 * MenuBar: 菜单条
 * Menuitem:菜单项
 * 
 * JOptionPane:对话框工具类
 * 
 * public static int showConfirmDialog(Component parentComponent, Object message) 弹出确认对话框
 * 
 * parentComponent: 父组件
 * message: 提示信息
 * 返回值:状态码
 */
public class Test5 {

	public static void main(String[] args) {
		 
		final Frame frame = new Frame("唐嫣的菜单");
		
		//设置窗体属性
		frame.setSize(600, 400);
		frame.setLocation(400, 200);
		frame.setLayout(new FlowLayout());
		
		//加入窗体事件监听,用来关闭窗体
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				
				//对话框弹出
				int state = JOptionPane.showConfirmDialog(frame, "你确定要离开我了么?");
				if(state==0) {
					System.exit(0);
				}
			}
		});
		
		//完成业务逻辑
		//创建菜单条
		MenuBar mb = new MenuBar();
		
		//创建菜单
		Menu menu = new Menu("文件");
		Menu menu2 = new Menu("更改标题");
		
		//创建菜单项
		MenuItem mi = new MenuItem("退出系统");
		MenuItem mi2 = new MenuItem("记事本");
		
		
		final MenuItem mi3 = new MenuItem("好好学习");
		final MenuItem mi4 = new MenuItem("天天向上");
		final MenuItem mi5 = new MenuItem("恢复标题");
		
		//将菜单放到菜单中
		menu.add(menu2);
		
		//将菜单项放到菜单中
		menu.add(mi);
		menu.add(mi2);
		
		menu2.add(mi3);
		menu2.add(mi4);
		menu2.add(mi5);
		
		//将菜单放到菜单条中
		mb.add(menu);
		
		//将菜单条放入窗体
		frame.setMenuBar(mb);
		
		
		//事件监听
		mi.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		
		mi2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					Runtime.getRuntime().exec("notepad");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		
		mi3.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				frame.setTitle(mi3.getLabel());
			}
		});
		
		mi4.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				frame.setTitle(mi4.getLabel());
			}
		});
		
		final String oldTitle = frame.getTitle();
		
		mi5.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				frame.setTitle(oldTitle);
			}
		});
		
		//窗体可见
		frame.setVisible(true);
	}

}
                    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值