java - 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);
}
}
解决方案
推荐阅读
- python - Python语音识别:语音上下文、短语、配置
- curl - 使用 curl 向 Actix 服务器 POST 请求失败并显示“400 Bad Request”
- python - 尝试通过单击 Python 中的按钮将计数器结果重置为零
- javascript - 在 React 页面刷新页面后,如何从 Socket.io 重新连接套接字实例?
- java - Java Spring Boot:依赖注入错误:将抽象方法的第一个参数更改为可选
- sql - PostgreSQL group by 在不同的列上
- python - 如何在绘图破折号中插入多个下拉列表
- python - Multiprocessing ProcessPoolExecutor - 在 Windows 命令行中运行时出现 BrokenProcessPool 错误
- javascript - 如何在 react js 中正确设置 react router dom 的 auth-flow?
- spring-boot - Spring 与 Spring Boot 的集成 - 高可用性