这一周主要学习了键盘事件、鼠标事件、菜单组件
一、键盘事件及监听处理
在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()+"
");
}
@Override
public void keyPressed(KeyEvent e) { //键盘按下
text.append("键盘"+KeyEvent.getKeyText(e.getKeyCode())+"键盘按下
");
}
@Override
public void keyReleased(KeyEvent e) { //键盘松开
text.append("键盘"+KeyEvent.getKeyText(e.getKeyCode())+"松开
");
}
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()+"
");
}
}); //加入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();
}
}
菜单组件