黑马程序员——java基础——GUI

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------GUI


GUI
    (1)用户图形界面
        GUI:方便直观
        CLI:需要记忆一下命令,麻烦
    (2)两个包:
        java.awt:和系统关联较强
        javax.swing:纯Java编写
    (3)GUI的继承体系
        组件:组件就是对象
            容器组件:是可以存储基本组件和容器组件的组件。
            基本组件:是可以使用的组件,但是必须依赖容器。



    (4)事件监听机制
        A:事件源 :   事件发生的地方

        B:事件:        就是要发生的事情

        C:事件处理:就是针对发生的事情做出的处理方案

        D:事件监听:就是把事件源和事件关联起来


     事件监听机制流程:


    (5)适配器模式
        A:接口
        B:抽象适配器类
        C:实现类
    (6)案例:
        A:创建窗体案例

<span style="font-size:18px;">public class FrameDemo {
	public static void main(String[] args) {
		// 创建窗体对象
		
		Frame f = new Frame("窗体");

		// 设置窗体标题
		f.setTitle("HelloWorld");
		// 设置窗体大小
		f.setSize(400, 300); // 单位:像素
		// 设置窗体位置
		f.setLocation(400, 200);

		// 调用一个方法,设置让窗体可见
		f.setVisible(true);
	}
}</span>


        B:窗体关闭案例

<span style="font-size:18px;">public class FrameDemo {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame("窗体关闭");

		// 设置窗体属性
		f.setBounds(400, 200, 400, 300);

		// 让窗体关闭
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

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


        C:把文本框里面的数据转移到文本域

<span style="font-size:18px;">public class FrameDemo {
	public static void main(String[] args) {
		// 创建窗体对象
		Frame f = new Frame("数据转移");
		// 设置窗体属性和布局
		f.setBounds(400, 200, 400, 300);
		f.setLayout(new FlowLayout());

		// 创建文本框
		final TextField tf = new TextField(20);
		// 创建按钮
		Button bu = new Button("数据转移");
		// 创建文本域
		final TextArea ta = new TextArea(10, 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) {
				// 获取文本框的值
				String tf_str = tf.getText().trim();
				// 清空数据
				tf.setText("");

				// 设置给文本域
				// ta.setText(tf_str);
				// 追加和换行
				ta.append(tf_str + "\r\n");
				
				//获取光标
				tf.requestFocus();
			}
		});

		// 设置窗体显示
		f.setVisible(true);
	}
}</span>


        D:多级菜单

<span style="font-size:18px;">public class FrameDemo {
	public static void main(String[] args) {
		// 创建窗体对象并设置属性
		final Frame f = new Frame("多级菜单");
		f.setBounds(400, 200, 400, 300);
		f.setLayout(new FlowLayout());
		
		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);
			}
		});
		
		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);
			}
		});
		
		mi4.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				Runtime r = Runtime.getRuntime();
				try {
					r.exec("notepad");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});

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

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值