第十三周课程总结

这一周主要学习了键盘事件、鼠标事件、菜单组件

一、键盘事件及监听处理

在Swing事件处理中也可以对见哦的操作进行监听,直接使用KeyListener 接口即可

KeyListener接口方法:

方法 类型 描述
void keyTyped(KeyEvent e) 普通 键入某个键时调用
void keyPressed(KeyEvent e) 普通 键盘按下时调用
void keyReleased(KeyEvent e) 普通 键盘松开时调用

KeyEvent事件的常用方法:

方法 类型 描述
public char getKeyChar() 普通 返回键入的字符,只针对keyTyped有意义
puclic int getKeyCode() 普通 返回键入字符的键码
public static String getKeyText(int keyCode) 普通 返回此键的信息,如"HOME"、"F1"或"A"等

实现键盘监听:

package 图形界面;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.*;


public class MyKeyHandle extends JFrame implements KeyListener {

	private JTextArea text=new JTextArea();
	public MyKeyHandle(){
		super.setTitle("Welcome To MLDN");
		JScrollPane scr =new JScrollPane(text);              //加入滚动条
		scr.setBounds(5,5,300,200);
		super.add(scr);                                      //在窗体中加入组件
		text.addKeyListener(this);                           //加入Key监听
		super.setSize(310,210);                              //设置窗体大小
		super.setVisible(true);                              //显示窗体
		super.addWindowListener(new WindowAdapter() {        //加入事件监听
		//覆写窗口关闭方法
			public void windowClosing(WindowEvent arg0) {
				System.exit(1);                              //系统退出
			}
	});
	
	
	@Override
	public void keyTyped(KeyEvent e) {                        //键入内容
		text.append("输入的内容是:"+e.getKeyChar()+"\n"); 
		
	}

	@Override
	public void keyPressed(KeyEvent e) {                      //键盘按下
		text.append("键盘"+KeyEvent.getKeyText(e.getKeyCode())+"键盘按下\n");
		
	}

	@Override 
	public void keyReleased(KeyEvent e) {                      //键盘松开
		text.append("键盘"+KeyEvent.getKeyText(e.getKeyCode())+"松开\n");
		
	}
	public class MyKeyEventDemo01{
		public void main(String[] args) {
			new MyKeyHandle();
		}
	}

}

上面的程序针对每个键盘的操作都会监听,而且在取得键盘信息时最好使用KeyEvent类提供静态方法getKeyText()完成

提示:
this表示当前对象。
以上程序中,MyKeyHandle实现了KeyListener监听接口,所以此类也就是监听操作类,这样当JTextArea增加事件时直接使用了this关键字

text.addKeyListener(this);

this表示当前对象,此时将this加入到监听器中,表示将一个监听处理类加入到监听器中。

在键盘监听器中,也可以使用KeyAdapter这个适配器完成键盘事件的监听:

package 图形界面;
import java.awt.event.*;
import javax.swing.*;
public class MyKey extends JFrame {         //此类定义时直接继承了JFrame类
	private JTextArea text=new JTextArea();
	public MyKey() {
		super.setTitle("welcome to mldn");  
		JScrollPane scr= new JScrollPane(text);          //加入滚动条
		scr.setBounds(5,5,300,200);                 
		super.add(scr);                                  //在窗体中加入组件
		text.addKeyListener(new KeyAdapter() {
			public void keyTyped(KeyEvent e) {
				text.append("输入的内容是:"+e.getKeyChar()+"\n");
			}
	});                     //加入key监听
		super.setSize(310,210);  
		super.setVisible(true);
		super.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent arg0) {
			System.exit(1);
			}
		});

}
	public class MyKeyEvent{
		public void main(String[] args) {
			new MyKey();
		}
	}
}

二、鼠标事件及监听处理
如果想对一个鼠标的操作进行监听,可以使用MouseListener接口

MouseListener接口方法:

方法 类型 描述
void mouseClicked(MouseEvent e) 普通 鼠标单击时调用(按下并释放)
void mousePressed(MouseEvent e) 普通 鼠标按下时调用
void mouseReleased(MouseEvent e) 普通 鼠标松开时调用
void mouseEntered(MouseEvent e) 普通 鼠标进入到组件时调用
void mouseExited(MouseEvent e) 普通 鼠标离开组件时调用

MouseEvent事件的常用方法

方法及常量 类型 描述
public static final int BUTTON1 常量 表示鼠标左键的常量
public static final int BUTTON2 常量 表示鼠标滚轴的常量
public static final int BUTTON3 常量 表示鼠标右键的常量
public int getButton() 普通 以数字形式返回按下的鼠标键
public int getClickCount() 普通 返回鼠标的单机次数
public static String getMouseModifiersText(int modifiers) 普通 以字符串形式返回鼠标按下的键信息
public int getX() 普通 返回鼠标操作的X坐标
public int getY() 普通 返回鼠标操作的Y坐标

实现鼠标监听:

package 图形界面;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyMouseHandle
{
    //定义该图形中所需的组件的引用
    private Frame f;
    private Button bt; 

    //方法
    MyMouseHandle()//构造方法
    {
        madeFrame();
    }

    public void madeFrame()
    {
        f = new Frame("My Frame");

        //对Frame进行基本设置。
        f.setBounds(300,100,600,500);//对框架的位置和大小进行设置
        f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//设计布局

        bt = new Button("My Button");

        //将组件添加到Frame中
        f.add(bt);

        //加载一下窗体上的事件
        myEvent();

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

    private void myEvent()
    {
        f.addWindowListener(new WindowAdapter()//窗口监听
        {
            public void windowClosing(WindowEvent e)
            {
                System.out.println("窗体执行关闭!");
                System.exit(0);
            }
        });

        bt.addActionListener(new ActionListener()//按钮监听
        {
            public void actionPerformed(ActionEvent e)
            {
                 System.out.println("按钮活动了!");
            }
        });
        bt.addMouseListener(new MouseAdapter()//鼠标监听
        {
            private int count = 1; 
            private int mouseCount = 1;
            public void mouseEntered(MouseEvent e)
            {
                System.out.println("鼠标监听"+count++);
            }
            public void mouseClicked(MouseEvent e)
            {
                if(e.getClickCount()==2)
                   System.out.println("鼠标被双击了");
                else System.out.println("鼠标被点击"+mouseCount++);
            }
        });
    }

    public static void main(String[] agrs)
    {
        new MyMouseHandle();
    }
}

鼠标拖拽事件几起监听处理

方法 类型 描述
void mouseDragged(MouseEVent e) 普通 在组件上按下并拖动时调用
void mouseMoved(MouseEvent e) 普通 鼠标移动到组件时调用

三、单选钮:JRadioButton

单选钮就是在给出多个显示信息中指定选择一个,在Swing中可以使用JRadioButton完成一组单选钮的操作

方法 类型 描述
public JRadioButton(Icon icon) 构造 建立一个单选钮,并指定图片
public JRadioButton(Icon icon,boolean selected) 构造 建立一个单选钮,并指定图片和其是否选定
public JRadioButton(String text) 构造 建立一个单选钮,并指定其文字,默认为不选定
public JRadioButton(String text,boolean selected) 构造 建立一个单选钮,并指定稳住和其是否选定
public JRadioButton(String text,Icon icon,boolean selected) 构造 建立一个单选钮,并指定图片、文字、和其是否选定
public void setSelected(boolean b) 普通 设置是否被选中
public boolean isSelected() 普通 返回是否被选中
public void setText(String text) 普通 设置显示文本
public void setIcon(Icon defaultIcon) 普通 设置图片
package java.图形界面;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.BorderFactory;
//完成单选的实现
class MyRadio
{
	//设置一窗体
	private JFrame frame = new JFrame("单选按钮");
	//获取窗体容器
	private Container cont = frame.getContentPane();
	//定义三个窗体按钮
	private JRadioButton jradio1 = new JRadioButton("男");
	private JRadioButton jradio2 = new JRadioButton("女");
	//定义一个面板
	private JPanel pan = new JPanel();
	public MyRadio()
	{
		//设置边框显示条
		pan.setBorder(BorderFactory.createTitledBorder("性别:"));
		//定义排版样式
		pan.setLayout(new GridLayout(3, 1));
		pan.add(this.jradio1);
		pan.add(this.jradio2);
		cont.add(pan);
		this.frame.setSize(400, 200);
		this.frame.setVisible(true);
		//监听窗体关闭事件
		this.frame.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent obj)
			{
				System.exit(1);
			}
		});
	}
}
public class JRadioButtonDemo01
{
	public static void main(String args[])
	{
		new MyRadio();
	}
}

四、复选框JCheckBox

package 图形界面;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JCheckBox;
import javax.swing.BorderFactory;
class MyCheckBox
{
    // 窗体
    private JFrame frame = new JFrame("使用复选框"); // 定义窗体
    private Container cont = frame.getContentPane(); // 得到窗体容器
    private JCheckBox jcb1 = new JCheckBox("复选框1"); // 定义一个复选框
    private JCheckBox jcb2 = new JCheckBox("复选框2"); // 定义一个复选框
    private JCheckBox jcb3 = new JCheckBox("复选框3"); // 定义一个复选框
    private JPanel pan = new JPanel();
    public MyCheckBox()
    {
        pan.setBorder(BorderFactory.createTitledBorder("多选:"));
        pan.setLayout(new GridLayout(1, 3)); // 设置组件的排版
        pan.add(this.jcb1); // 增加组件
        pan.add(this.jcb2); // 增加组件
        pan.add(this.jcb3); // 增加组件
        cont.add(pan); // 将面板加入到容器之中
        this.frame.setSize(330, 80);
        this.frame.setVisible(true); // 设置可显示
        // 监听窗体关闭事件
        this.frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent arg)
            {
                System.exit(1);
            }
        });
    }
}

public class  JCheckBoxDemo01
{
    public static void main(String args[])
    {
        new MyCheckBox();
    }
}

菜单组件




posted @ 2019-11-23 19:02  有灵魂的蚂蚁  阅读(145)  评论(1编辑  收藏  举报