【发布时间】:2020-07-12 17:17:53
【问题描述】:
我正在尝试制作一个简单的游戏,它在框架上显示圆圈,单击时圆圈应该消失。我正在学习 Java Swing 如何工作并设法画了一个圆圈(哇,这样的成就)并弄清楚事件是如何工作的。我在圆圈中添加了一个 mouseListener,现在单击时,我想要一个控制台日志,表明它已被单击,但最终结果与预期不符。无论我在哪里点击,我总是得到“点击”控制台日志。例如,当我尝试将侦听器添加到 JButton 时,我得到了最终结果。图形的事件是否不同?
import javax.swing.*;
import javax.swing.event.MouseInputListener;
import java.awt.*;
import java.awt.event.*;
import java.sql.SQLOutput;
public class CirclePop {
JFrame frame;
Circle circle;
public static void main(String[] args) {
CirclePop circlePop = new CirclePop();
circlePop.drawFrame();
}
public void drawFrame() {
frame = new JFrame();
circle = new Circle();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(circle);
circle.addMouseListener(new Click());
frame.setSize(300, 300);
frame.setVisible(true);
}
class Click implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("Pressed");
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
}
import java.awt.*;
import javax.swing.*;
class Circle extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.fillOval(150, 140, 30, 30);
}
}
【问题讨论】:
-
圆有什么界限?我发现 - 有点 - JPanel 的边界和您在其中绘制图形的位置并不完全相同。