Java基础知识 第七节 GUI的复习

一、AWT及事件监听

  1. AWT与Swing
    AWT:抽象窗口工具包,重量级控件。
    Swing:AWT基础上,建立的一套图形界面系统,轻量级空间。
  2. 继承关系图:
    在这里插入图片描述
  3. AWT事件监听:
    事件源(组件)、事件(Event)、监听器(Listener)、事件处理(引发事件后处理方式–处理代码)。
    1import java.awt.*;
    import java.awt.event.*;
    public class Exam01 {
    	public static void main(String[] args) {
    		//创建窗体对象
    		Frame f= new Frame();
    		//设置窗体属性
    		f.setTitle("关闭窗口");
    		f.setSize(400,300);
    		f.setLocation(400,200);
    		//适配器类,实现重写方法,关闭窗口
    		f.addWindowListener(new WindowAdapter(){
    			public void windowClosing(WindowEvent e){
    				System.exit(0);
    			}
    		});
    		f.setVisible(true);
    	}
    }
    
  4. public void windowOpened(windowEvent e):方法,窗口启动时自动执行。
    (注:可以实现弹出窗口,若要关闭窗口则关闭程序;可以实现启动时加载文字信息;可以实现弹出提示信息。)
  5. 鼠标与键盘事件监听:
    2public class Exam02 {
    	public static void main(String[] args) {
    		final Frame f = new Frame("Flowlayout");// 创建一个名为Flowlayout的窗体
    		// 设置窗体中的布局管理器为FlowLayout,所有组件左对齐,水平间距为20,垂直间距为30
    		f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));
    		f.setSize(200, 300);                     // 设置窗体大小
    		f.setLocation(300, 200);                // 设置窗体显示的位置
    		Button but1 = new Button("第1个按钮");// 创建第1个按钮
    		f.add(but1);                              // 把"第1个按钮"添加到f窗口
    		// 下面的代码是每点击一次“第1个按钮”就向窗体中添加一个按钮
    //动作事件监听:
    		but1.addActionListener(new ActionListener() { // 动作事件为第1个按钮添加点击事件
    //鼠标事件监听:
    //but1.addMouseListener(new MouseAdapter() {
    //	public void mouseClicked(windowEvent e){}
    //});
    			private int num = 1;                           // 定义变量num,记录按钮的个数
    			public void actionPerformed(ActionEvent e) {
    				f.add(new Button("第" + ++num + "个按钮"));// 向窗体中添加新按钮
    				// f.setVisible(true);                       // 刷新窗体显示新按钮
    			}
    		});
    //键盘事件监听:
    //but1.addKeyListener(new KeyAdapter() {
    //	public void keyPressed(windowEvent e){}
    //});
    		f.setVisible(true); // 设置窗体可见
    	}
    }
    
    3import java.awt.event.*;
    import java.awt.*;
    
    public class Exam03 {
    	public static void main(String[] args) {
    		final Frame f = new Frame("Flowlayout");
    		f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));
    		f.setSize(500, 400);                     // 设置窗体大小
    		f.setLocation(300, 200);                // 设置窗体显示的位置
    		Button but = new Button("my button");
    		TextField tf = new TextField(40);		//单行文本框,长度40
    		f.add(but);    
    		f.add(tf);                 
    		tf.addKeyListener(new KeyAdapter() { 		// 键盘监听
    			@Override
    			public void keyPressed(KeyEvent e){
    				int code = e.getKeyCode();
    				if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
    				System.out.println("必须是0-9数字");
    				//e.consume();
    				}
    			}});
    		f.setVisible(true); // 设置窗体可见
    	}
    }
    

二、布局管理器

  1. 五种布局管理器:
    FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout。

  2. FlowLayout:基本布局,从左到右,从上至下。

  3. BorderLayout:边界布局管理器,东西南北中,五个方位。

  4. GridLayout:网格布局,划分区块大小相同。

  5. GridBagLayout:网格包布局,网格布局升级,划分区块大小可不一致。

  6. CardLayout:卡片布局。切换程序。(常用:卡片布局注册到监听器中,监听器绑定按钮,实现切换程序页面。)

  7. Graphics:所有图形上下文抽象的类,可以用于绘图使用。
    方法:setColor():设置颜色、setFont():设置字体、drawRect():绘制矩形、drawOval():绘制椭圆、drawString():绘制一段文字。

三、Swing体系

  • Swing:AWT基础上,建立的一套图形界面系统,轻量级空间。

  • Swing使用:一般都为AWT组件(类)名称前加J。如:JFrame。

  • JDialog类:JDialog和Dialog都是一个对话框。
    JDialog分为模态和非模态对话框。模态对话框须在用户处理完当前窗口后,才可以处理其他窗口。非模态对话框可以处理其他窗口。
    JDialog(Frame owner,boolean model);:当modal为true时,是模态对话框,当modal为false时,是非模态对话框。

  • JFrame:JFrame和Frame都是创建一个窗体。
    注:1、当java文件继承JFrame类时,可以不用再创建JFrame对象,直接通过this方法调用。
    注:2、两者区别是JFrame提供了一个关闭按钮的默认操作,其语法为:

    this.setDefaultCloseOperation(Frame.(JFrame.EXIT_ON_CLOSE));
    
  • JPanel:JPanel和Panel都是创建一个面板。(无边框、不能移动、放大、缩小。)

  • JScrollPane:滚动面板,只能存放一个组件。(若要放多个组件,可将组件放到JPanel中,再将JPanel放到JScrollPane滚动面板中。)

  • JTextComponent:主要用于接受用户的输入或者向用户展示信息。包括:JTextField和JTextArea。

    this.setDefaultCloseOperation(Frame.(JFrame.EXIT_ON_CLOSE));
    
  • JCheckBox组件:复选框按钮。
    (注:ABstractButton:是所有按钮的基类。)

  • JRadioButton组件:单选框按钮。只能选中一个。

  • JComboBox组件:组合框(下拉列表框)。
    方法:

    JComboBox(Object[] items);	//创建包含指定数组中的JCmboBOx。
    JComboBox(Vector<?> iteams);	//创建包含指定Vector中元素的JComboBox。
    
  • 菜单:下拉式菜单、弹出式菜单

  • 下拉式菜单:菜单栏(JMenuBar)、菜单(JMenu)、菜单项(JMenuItem)。
    使用:创建一个JMenuBar对象,放置在JFrame顶部。创建JMenu对象,添加到JMenu菜单栏中,创建JMenuItem对象,添加到JMenu菜单中。

    4import java.awt.event.*;
    import javax.swing.*;
    public class Exam04 extends JFrame {
    	public Exam04() {
    		JMenuBar menuBar = new JMenuBar(); // 创建菜单栏
    		this.setJMenuBar(menuBar);          // 将菜单栏添加到JFrame窗口中
    		JMenu menu = new JMenu("操作");     // 创建菜单
    		menuBar.add(menu);                   // 将菜单添加到菜单栏上
    		// 创建两个菜单项
    		JMenuItem item1 = new JMenuItem("弹出窗口");
    		JMenuItem item2 = new JMenuItem("关闭");
    		// 为菜单项添加事件监听器
    		item1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				// 创建一个JDialog窗口
    				JDialog dialog = new JDialog(Example22.this, true);
    				dialog.setTitle("弹出窗口");
    				dialog.setSize(200, 200);
    				dialog.setLocation(50, 50);
    				dialog.setVisible(true);
    			}
    		});
    		item2.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
    		menu.add(item1);       // 将菜单项添加到菜单中
    		menu.addSeparator();  // 添加一个分隔符
    		menu.add(item2);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setSize(300, 300);
    		this.setVisible(true);
    	}
    	public static void main(String[] args) {
    		new Exam04 ();
    	}
    }
    
  • JPopupMenu:弹出式菜单,和下拉式菜单功能相似、用法相似。

四、案例包

  • 更多案例请下载案例包:
  • 案例包名为:【卡片布局、验证码、弹出菜单案例.zip】

End.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值