时间:2023-02-18 10:16:31 | 栏目:JAVA代码 | 点击:次
Java程序设计 图形用户界面 【八】事件处理下
想让按钮变得有意义,就必须使用事件处理
使用ActionListener接口处理按钮的动作事件
方法 | 作用 |
---|---|
void actionPerformed(ActionEvent e) | 发生操作时调用 |
使用ActionListener监听
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class ActionHandle{ private JFrame frame = new JFrame("一"); private JButton but = new JButton("显示"); private JLabel lab = new JLabel(); private JTextField text = new JTextField(10); private JPanel pan = new JPanel(); public ActionHandle(){ Font font = new Font("Serief",Font.ITALIC+Font.BOLD,28); lab.setFont(font); lab.setText("请输入信息"); but.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==but){ lab.setText(text.getText()); } } }); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); frame.setLayout(new GridLayout(2,1)); pan.setLayout(new GridLayout(1,2)); pan.add(text); pan.add(but); frame.add(pan); frame.add(lab); frame.pack(); frame.setVisible(true); } } public class Hello { public static void main(String[] args) { new ActionHandle(); } }
if(e.getSource()==but){} //判断触发源是否为按钮
用户登录操作
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class LoginCheck{ private String username; private String password; public LoginCheck(String username,String password){ this.username=username; this.password=password; } public boolean validate(){ if("abc".equals(username)&&"123".equals(password)){ return true; }else { return false; } } } class ActionHandle{ private JFrame frame = new JFrame("一"); private JButton sub = new JButton("登录"); private JButton res = new JButton("重置"); private JLabel nameLab = new JLabel("用户名:"); private JLabel passLab = new JLabel("密 码:"); private JLabel infoLab = new JLabel("用户登录"); private JTextField username = new JTextField(); private JPasswordField password = new JPasswordField(); public ActionHandle(){ Font font = new Font("Serief",Font.BOLD,12); infoLab.setFont(font); sub.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==sub){ String uname = username.getText(); String upass = new String(password.getPassword()); LoginCheck log = new LoginCheck(uname,upass); if(log.validate()){ infoLab.setText("登录成功"); }else { infoLab.setText("登录失败"); } } if(e.getSource()==res){ username.setText(""); password.setText(""); infoLab.setText("用户登录"); } } }); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); frame.setLayout(null); nameLab.setBounds(5,5,60,20); passLab.setBounds(5,30,60,20); infoLab.setBounds(5,65,220,30); username.setBounds(65,5,100,20); password.setBounds(65,30,100,20); sub.setBounds(165,5,60,20); res.setBounds(165,30,60,20); frame.add(nameLab); frame.add(passLab); frame.add(infoLab); frame.add(username); frame.add(password); frame.add(sub); frame.add(res); frame.setSize(280,130); frame.setVisible(true); } } public class Hello { public static void main(String[] args) { new ActionHandle(); } }
KeyListener接口对键盘的操作进行监听
方法 | 作用 |
---|---|
void keyTyped(KeyEvent e) | 键入某个键时调用 |
void keyPressed(KeyEvent e) | 键盘按下时调用 |
void keyReleased(KeyEvent e) | 键盘松开时调用 |
通过KeyEvent取得键盘键入的内容
方法 | 作用 |
---|---|
public char getKeyChar() | 返回键入的字符,只针对于keyTyped有意义 |
public int getKeyCode() | 返回输入字符的键码 |
public static String getKeyText(int keyCode) | 返回此键的信息 |
实现键盘监听
import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class MyKeyHandle extends JFrame implements KeyListener{ private JTextArea text = new JTextArea(); public MyKeyHandle(){ super.setTitle("一"); JScrollPane scr = new JScrollPane(text); scr.setBounds(5,5,300,200); super.add(scr); text.addKeyListener(this); super.setSize(310,210); super.setVisible(true); super.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); 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 Hello { public static void main(String[] args) { new MyKeyHandle(); } }
使用KeyAdapter适配器
import javax.swing.*; import java.awt.event.*; class MykeyHandle extends JFrame{ private JTextArea text = new JTextArea(); public MykeyHandle(){ super.setTitle("一"); JScrollPane scr = new JScrollPane(text); scr.setBounds(5,5,300,200); super.add(scr); text.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { super.keyTyped(e); text.append("输入的内容是:"+e.getKeyChar()+"\n"); } }); super.setSize(310,210); super.setVisible(true); super.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } } public class Hello { public static void main(String[] args) { new MykeyHandle(); } }
MouseListener接口
方法 | 作用 |
---|---|
void mouseClicked(MouseEvent e) | 鼠标单击时调用(按下并释放) |
void mousePressed(MouseEvent e) | 鼠标按下时调用 |
void mouseReleased(MouseEvent e) | 鼠标松开时调用 |
void mouseEntered(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坐标 |
import javax.swing.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class MyMouseHandle extends JFrame implements MouseListener{ private JTextArea text = new JTextArea(); public MyMouseHandle(){ super.setTitle("一"); JScrollPane src = new JScrollPane(text); src.setBounds(5,5,300,200); super.add(src); text.addMouseListener(this); super.setSize(310,210); super.setVisible(true); super.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } public void mouseClicked(MouseEvent e){ int c = e.getButton(); String mouseInfo = null; if(c==MouseEvent.BUTTON1){ mouseInfo="左键"; }else if(c==MouseEvent.BUTTON3){ mouseInfo="右键"; }else { mouseInfo="滚轴"; } text.append("鼠标单击"+mouseInfo+"\n"); } @Override public void mousePressed(MouseEvent e) { text.append("鼠标按下\n"); } @Override public void mouseReleased(MouseEvent e) { text.append("鼠标松开\n"); } @Override public void mouseEntered(MouseEvent e) { text.append("鼠标进入组件\n"); } @Override public void mouseExited(MouseEvent e) { text.append("鼠标离开组件\n"); } } public class Hello { public static void main(String[] args) { new MyMouseHandle(); } }
通过MouseAdapter实现对指定鼠标操作的监听
import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class MyMouseHandle extends JFrame{ private JTextArea text = new JTextArea(); public MyMouseHandle(){ super.setTitle("一"); JScrollPane scr = new JScrollPane(text); scr.setBounds(5,5,300,200); super.add(scr); text.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); int c = e.getButton(); String mouseInfo = null; if(c==MouseEvent.BUTTON1){ mouseInfo="左键"; }else if (c==MouseEvent.BUTTON3){ mouseInfo="右键"; }else { mouseInfo="滚轴"; } text.append("鼠标单击"+mouseInfo+"\n"); } }); super.setSize(310,210); super.setVisible(true); super.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } } public class Hello { public static void main(String[] args) { new MyMouseHandle(); } }
MouseMotionListener接口
方法 | 作用 |
---|---|
void mouseDragged(MouseEvent e) | 在组件上按下并拖动时调用 |
void mouseMoved(MouseEvent e) | 鼠标移动到组件时调用 |
import javax.swing.*; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; class MyMouseMotionHandle extends JFrame{ public MyMouseMotionHandle(){ super.setTitle("一"); super.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseDragged(MouseEvent e) { System.out.println("鼠标拖拽到:X="+e.getX()+ " Y="+e.getY()); } @Override public void mouseMoved(MouseEvent e) { System.out.println("鼠标移动到窗体"); } }); super.setSize(310,210); super.setVisible(true); super.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(1); } }); } } public class Hello { public static void main(String[] args) { new MyMouseMotionHandle(); } }
使用MouseMotionAdapter类
super.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { System.out.println("鼠标拖拽到:X="+e.getX()+ " Y="+e.getY()); } });