第十三周课程总结
一、键盘事件及监听处理
定义
KeyListener
接口方法:
如果想要取得键盘输入的内容,则可以通过KeyEvent
取得。
KeyEvent
事件的常用方法:
例如:
package diyishiba;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Key implements KeyListener{
JFrame jfr=new JFrame("窗口");
JTextArea jte=new JTextArea();
JScrollPane jsc=new JScrollPane(jte,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
public Key() {
jte.addKeyListener(this);
jfr.add(jsc);
jfr.setSize(400,300);
jfr.setVisible(true);
}
public void keyTyped(KeyEvent e) {
jte.append("键盘输入的是"+e.getKeyChar()+"
");
}
public void keyPressed(KeyEvent e) {
jte.append("键盘按下的是"+e.getKeyText(e.getKeyCode())+"
");
}
public void keyReleased(KeyEvent e) {
jte.append("键盘松开时的是"+e.getKeyText(e.getKeyCode())+"
");
}
}
测试类:
package diyishiba;
public class test11 {
public static void main(String[] args) {
new Key();
}
}
运行截图:
二、鼠标事件及监听处理
定义:
MouseListener
接口的方法:
MouseEvent
事件的常用方法:
例如:
package diyishiba;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class MouseL implements MouseListener{
JFrame jfr=new JFrame("窗口");
JTextArea jte=new JTextArea();
JScrollPane jsc=new JScrollPane(jte,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
public MouseL() {
jte.addMouseListener(this);
jfr.add(jsc);
jfr.setSize(300, 400);
jfr.setVisible(true);
}
public void mouseClicked(MouseEvent e) {
int i=e.getButton();
String j=null;
if(i==MouseEvent.BUTTON1) {
j="左键";
}
else if(i==MouseEvent.BUTTON3) {
j="右键";
}
jte.append("鼠标单击的是"+j+"
");
}
@Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseEntered(MouseEvent e) {
jte.append("鼠标进入文本框"+"
");
}
@Override
public void mouseExited(MouseEvent e) {
jte.append("鼠标离开文本框"+"
");
}
}
测试类:
package diyishiba;
public class Test12 {
public static void main(String[] args) {
new MouseL();
}
}
运行截图
三、鼠标拖拽事件及监听处理:
定义:
MouseMotionListener
接口的方法:
例如:
package diyishiba;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class MouseMotionL implements MouseMotionListener{
JFrame jfr=new JFrame("窗口");
public MouseMotionL() {
jfr.addMouseMotionListener(this);
jfr.setSize(400, 300);
jfr.setVisible(true);
}
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("鼠标拖拽到:X="+e.getX()+",Y="+e.getY());
}
@Override
public void mouseMoved(MouseEvent e) {
System.out.println("鼠标移动到窗口");
}
}
测试类:
package diyishiba;
public class Test13 {
public static void main(String[] args) {
new MouseMotionL();
}
}
运行截图:
四、单选钮:JRadioButton
定义:
JRadioButton
类的常用方法:
例如:
package diyishiba;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import java.awt.GridLayout;
public class JRadioB {
JFrame jfr;
JPanel jpa;
JRadioButton jra1,jra2,jra3;
public JRadioB() {
jfr=new JFrame("窗口");
jpa=new JPanel();
jra1=new JRadioButton("和平精英");
jra2=new JRadioButton("王者荣耀");
jra3=new JRadioButton("不玩游戏");
jpa.setBorder(BorderFactory.createTitledBorder("请选择平时喜欢玩的游戏"));
jpa.setLayout(new GridLayout(1,3));
jpa.add(jra1);
jpa.add(jra2);
jpa.add(jra3);
jfr.add(jpa);
jfr.setSize(330, 80);
jfr.setVisible(true);
}
}
测试类:
package diyishiba;
public class Test13 {
public static void main(String[] args) {
new JRadioB();
}
}
运行截图:
因为没有加单选按钮组所以可以多选,加上之后如下:
package diyishiba;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import java.awt.GridLayout;
import javax.swing.ButtonGroup;
public class JRadioB {
JFrame jfr;
JPanel jpa;
JRadioButton jra1,jra2,jra3;
ButtonGroup group;
public JRadioB() {
jfr=new JFrame("窗口");
jpa=new JPanel();
jra1=new JRadioButton("和平精英");
jra2=new JRadioButton("王者荣耀");
jra3=new JRadioButton("不玩游戏");
group=new ButtonGroup();
jpa.setBorder(BorderFactory.createTitledBorder("请选择平时喜欢玩的游戏"));
jpa.setLayout(new GridLayout(1,3));
jpa.add(jra1);
jpa.add(jra2);
jpa.add(jra3);
group.add(jra1);
group.add(jra2);
group.add(jra3);
jfr.add(jpa);
jfr.setSize(330, 80);
jfr.setVisible(true);
}
}
测试类
package diyishiba;
public class Test13 {
public static void main(String[] args) {
new JRadioB();
}
}
运行截图:
从这里可以看出,加上ButtonGroup
方法后就只能单选了。
从这次写代码中又学到了一些新的知识点,就是怎么加一个有标题的边框,如下图:运用setBorder
方法添加一个边框。
五、JRadioButton
事件处理
定义:
ItemListener
接口的方法:
此方法中存在ItemEvent
事件,此事件的常用方法及常量如下图所示:
例如:
package diyishiba;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
public class JRadioB implements ItemListener{
JFrame jfr;
JPanel jpa;
JRadioButton jra1,jra2,jra3;
ButtonGroup group;
public JRadioB(){
jfr=new JFrame("窗口");
jpa=new JPanel();
jra1=new JRadioButton("和平精英");
jra2=new JRadioButton("王者荣耀");
jra3=new JRadioButton("不玩游戏");
group=new ButtonGroup();
jra1.addItemListener(this);
jra2.addItemListener(this);
jra3.addItemListener(this);
jpa.setBorder(BorderFactory.createTitledBorder("请选择平时喜欢玩的游戏"));
jpa.setLayout(new GridLayout(1,3));
jpa.add(jra1);
jpa.add(jra2);
jpa.add(jra3);
group.add(jra1);
group.add(jra2);
group.add(jra3);
jfr.add(jpa);
jfr.setSize(330, 80);
jfr.setVisible(true);
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getSource()==jra1) {
if(e.getStateChange()==ItemEvent.SELECTED) {
JOptionPane.showMessageDialog(null, "你的选择是"+jra1.getText());
}
}
else if(e.getSource()==jra2) {
if(e.getStateChange()==ItemEvent.SELECTED) {
JOptionPane.showMessageDialog(null, "你的选择是"+jra2.getText());
}
}
else if(e.getSource()==jra3) {
if(e.getStateChange()==ItemEvent.SELECTED) {
JOptionPane.showMessageDialog(null, "你的选择是"+jra3.getText());
}
}
}
}
测试类:
package diyishiba;
public class Test13 {
public static void main(String[] args) {
new JRadioB();
}
}
运行截图:
从这次写代码中也学到了一个新的知识点,可以运用JOptionPane
方法弹出窗口,如下图所示:
六、菜单组件
定义:
JMenuBar
的常用方法:
JMenu
的常用方法:
例如:
package diyishiba;
import java.awt.*;
import javax.swing.*;
public class Jmenub {
JFrame frame;
JTextArea area;
JMenu menu1,menu2;
JMenuBar bar;
public Jmenub() {
frame=new JFrame("窗口");
area=new JTextArea();
menu1=new JMenu("文件");
menu2=new JMenu("编辑");
bar=new JMenuBar();
bar.add(menu1);
bar.add(menu2);
frame.setJMenuBar(bar);
frame.add(area);
frame.setSize(300, 100);
frame.setVisible(true);
}
}
测试类:
package diyishiba;
public class Test13 {
public static void main(String[] args) {
new Jmenub();
}
}