如何监听事件里发生的错误_Swing 如何进行事件监听

步骤1:按钮监听步骤2:键盘监听步骤3:鼠标监听步骤4:适配器


示例 1 : 按钮监听
创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用

a5ffa3deea5d8781fbdd848a50ff4943.png
package gui;
  
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
  
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
  
public class TestGUI {
 public static void main(String[] args) {
  
 JFrame f = new JFrame("LoL");
 f.setSize(400, 300);
 f.setLocation(580, 200);
 f.setLayout(null);
  
 final JLabel l = new JLabel();
  
 ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");
 l.setIcon(i);
 l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());
  
 JButton b = new JButton("隐藏图片");
 b.setBounds(150, 200, 100, 30);
  
 // 给按钮 增加 监听
 b.addActionListener(new ActionListener() {
  
 // 当按钮被点击时,就会触发 ActionEvent事件
 // actionPerformed 方法就会被执行
 public void actionPerformed(ActionEvent e) {
 l.setVisible(false);
 }
 });
  
 f.add(l);
 f.add(b);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
 f.setVisible(true);
 }
}

示例 2 : 键盘监听
键盘监听器: KeyListener
keyPressed 代表 键被按下
keyReleased 代表 键被弹起
keyTyped 代表 一个按下弹起的组合动作
KeyEvent.getKeyCode() 可以获取当前点下了哪个键

10a426ea844c3ebb677351a96e2a3e40.png
package gui;
  
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
  
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
  
public class TestGUI {
 public static void main(String[] args) {
  
 JFrame f = new JFrame("LoL");
 f.setSize(400, 300);
 f.setLocation(580, 200);
 f.setLayout(null);
  
 final JLabel l = new JLabel();
  
 ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");
 l.setIcon(i);
 l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());
  
 // 增加键盘监听
 f.addKeyListener(new KeyListener() {
  
 // 键被弹起
 public void keyReleased(KeyEvent e) {
  
 // 39代表按下了 “右键”
 if (e.getKeyCode() == 39) {
 // 图片向右移动 (y坐标不变,x坐标增加)
 l.setLocation(l.getX() + 10, l.getY());
 }
 }
  
 //键被按下
 public void keyPressed(KeyEvent e) {
 // TODO Auto-generated method stub
  
 }
  
 // 一个按下弹起的组合动作
 public void keyTyped(KeyEvent e) {
  
 }
 });
  
 f.add(l);
  
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
 f.setVisible(true);
 }
}

示例 3 : 鼠标监听
MouseListener 鼠标监听器
mouseReleased 鼠标释放
mousePressed 鼠标按下
mouseExited 鼠标退出
mouseEntered 鼠标进入
mouseClicked 鼠标点击
在本例中,使用mouseEntered,当鼠标进入图片的时候,图片就移动位置

aad730f39bfcae21436b40a5c93583c2.png
package gui;
  
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
  
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
  
public class TestGUI {
 public static void main(String[] args) {
  
 final JFrame f = new JFrame("LoL");
 f.setSize(800, 600);
 f.setLocationRelativeTo(null);
 f.setLayout(null);
  
 final JLabel l = new JLabel();
 ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");
 l.setIcon(i);
 l.setBounds(375, 275, i.getIconWidth(), i.getIconHeight());
  
 f.add(l);
  
 l.addMouseListener(new MouseListener() {
  
 // 释放鼠标
 public void mouseReleased(MouseEvent e) {
 // TODO Auto-generated method stub
  
 }
  
 // 按下鼠标
 public void mousePressed(MouseEvent e) {
 // TODO Auto-generated method stub
  
 }
  
 // 鼠标退出
 public void mouseExited(MouseEvent e) {
 // TODO Auto-generated method stub
  
 }
  
 // 鼠标进入
 public void mouseEntered(MouseEvent e) {
  
 Random r = new Random();
  
 int x = r.nextInt(f.getWidth() - l.getWidth());
 int y = r.nextInt(f.getHeight() - l.getHeight());
  
 l.setLocation(x, y);
  
 }
  
 // 按下释放组合动作为点击鼠标
 public void mouseClicked(MouseEvent e) {
 // TODO Auto-generated method stub
  
 }
 });
  
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
 f.setVisible(true);
 }
}

示例 4 : 适配器MouseAdapter 鼠标监听适配器
一般说来在写监听器的时候,会实现MouseListener。
但是MouseListener里面有很多方法实际上都没有用到,比如mouseReleased ,mousePressed,mouseExited等等。
这个时候就可以使用 鼠标监听适配器,MouseAdapter 只需要重写必要的方法即可

package gui;
  
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
  
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
  
public class TestGUI {
 public static void main(String[] args) {
  
 final JFrame f = new JFrame("LoL");
 f.setSize(800, 600);
 f.setLocationRelativeTo(null);
 f.setLayout(null);
  
 final JLabel l = new JLabel("");
  
 ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");
 l.setIcon(i);
 l.setBounds(375, 275, i.getIconWidth(), i.getIconHeight());
  
 f.add(l);
  
 // MouseAdapter 适配器,只需要重写用到的方法,没有用到的就不用写了
 l.addMouseListener(new MouseAdapter() {
  
 // 只有mouseEntered用到了
 public void mouseEntered(MouseEvent e) {
  
 Random r = new Random();
  
 int x = r.nextInt(f.getWidth() - l.getWidth());
 int y = r.nextInt(f.getHeight() - l.getHeight());
  
 l.setLocation(x, y);
  
 }
 });
  
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
 f.setVisible(true);
 }
}


更多内容,点击了解: https://how2j.cn/k/gui/gui-listener/412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一:使用匿名内部类的形式进行设置       1.首先需要得到id,即必须清楚button的id值。        2.使用setOnClickListener,如下图所示    二:在XML文件中定义OnClick属性,在java代码中对应方法。       在button下加上如下代码android:onClick=skip(skip即为方法对应的名字,然后在java代码中在定义具体的方法)                 实现的结果如下: --------------------- 作者:xd1501013 来源:CSDN 原文:https://blog.csdn.net/xd15010130025/article/details/77604329 版权声明:本文为博主原创文章,转载请附上博文链接! Button按钮四种监听(二) 继续上次的,我们接下来要学习另外两种方式,三:Activity实现onClickListener接口;四:其他类实现onClickListener接口。    三:Activity实现onClickListener接口      1.直接在Activity上添加          public class MainActivity extends Activity implements OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(this); } 再创建方法      public void onClick(View v) { // TODO 自动生成的方法存根 Log.i("tag", "点击了button按钮"); } 实现效果    四:其他类实现onClickListener接口       1.创建一个其他类 class mylistener implements OnClickListener{ @Override public void onClick(View v) { // TODO 自动生成的方法存根 Log.i("tag", "点击了button按钮"); } }      二: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new mylistener()); } 即可实现。 如果两个按钮怎么办????     用v.getId得到id值,然后用case来处理不同的情况.   --------------------- 作者:xd1501013 来源:CSDN 原文:https://blog.csdn.net/xd15010130025/article/details/77803332 版权声明:本文为博主原创文章,转载请附上博文链接!
好的,以下是一个简单的示例代码: ```java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Example implements ActionListener { private JFrame frame; private JPanel panel; private JLabel label; private JTextField textField; private JButton button; public Example() { frame = new JFrame("Demo"); frame.setSize(400, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new JPanel(); label = new JLabel("请输入密码:"); textField = new JTextField(10); button = new JButton("登录"); button.addActionListener(this); panel.add(label); panel.add(textField); panel.add(button); frame.add(panel); frame.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == button) { String password = textField.getText(); if (password.equals("123456")) { // 登录成功,打开新窗口 frame.dispose(); // 关闭当前窗口 new LoginFrame(); } else { // 登录失败,弹出提示框 textField.setText(""); label.setText("密码错误,请重新输入:"); } } } public static void main(String[] args) { new Example(); } } class LoginFrame extends JFrame { private JPanel panel; private JLabel label; public LoginFrame() { setSize(200, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new JPanel(); label = new JLabel("欢迎登录!"); panel.add(label); add(panel); setVisible(true); } } ``` 这个示例程序包含一个主窗口和一个登录窗口。当用户在主窗口中点击登录按钮时,如果密码正确,则打开登录窗口;否则,提示用户重新输入密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值