首页 > 解决方案 > JAVA鼠标事件不起作用

问题描述

我正在关注有关在 JAVA 中为游戏创建按钮的教程。但是我制作的代码不起作用,我似乎可以看出它有什么问题。它应该创建一个矩形(工作正常),然后使用鼠标适配器来检测鼠标单击矩形时的移动。我错过了鼠标监听器吗?需要吗?

 import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.CardLayout;

public class ButtonPress extends JFrame {

private JPanel contentPane;

Rectangle startButton = new Rectangle(150, 100, 100, 25);
Rectangle quitButton = new Rectangle(150, 150, 100, 25);


public void paint(Graphics g) {

    g.setColor(Color.CYAN);
    g.fillRect(startButton.x, startButton.y, startButton.width, startButton.height);
    g.setFont(new Font("Arial", Font.BOLD, 12));
    g.setColor(Color.GRAY);
    g.drawString("Start Game", startButton.x+20, startButton.y+17);

    g.setColor(Color.CYAN);
    g.fillRect(quitButton.x, quitButton.y, quitButton.width, quitButton.height);
    g.setFont(new Font("Arial", Font.BOLD, 12));
    g.setColor(Color.GRAY);
    g.drawString("Quit Game", quitButton.x+20, quitButton.y+17);

}

public class MouseHandler extends MouseAdapter {
    @Override
    public void mouseMoved(MouseEvent e) {

    }
    @Override
    public void mousePressed(MouseEvent e) {
        int mx = e.getX();
        int my = e.getY();
        if(mx > startButton.x && mx < startButton.x+startButton.width &&
            my > startButton.y && my < startButton.y+startButton.height) {
            JOptionPane.showMessageDialog(null, "Starting");
        }
    }
}

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                ButtonPress frame = new ButtonPress();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

public ButtonPress() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    }

}

标签: javabuttonmouseeventmousemouselistener

解决方案


推荐阅读