作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 MouseEvents 和 MouseListeners 非常陌生,最近我问了一个关于创建篮球投篮图表的问题。到目前为止我所拥有的是这个
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class StatTracker extends JPanel //implements MouseListener
{
JPanel court;
int xCoord, yCoord, clicks;
boolean made, missed = false;
public void paintComponent(Graphics g)
{
//Draw court lines
g.setColor(Color.BLUE);
g.fillRect(190,0,120,190);
g.drawOval(190,130,120,120);
g.drawRect(0,0,500,400);
g.drawArc(52,-110,396,360,0,-180);
g.drawLine(52,0,52,70);
g.drawLine(448,0,448,70);
g.setColor(Color.BLACK);
g.fillRect(220,35,60,5);
g.fillOval(240,40,20,20);
if(made)
{
g.setColor(Color.GREEN);
g.drawString("O", xCoord, yCoord);
}
if(missed)
{
g.setColor(Color.RED);
g.drawString("X", xCoord, yCoord);
}
//made=false;
//missed=false;
}
public StatTracker()
{
setLayout(new BorderLayout());
court = new JPanel();
}
public void mouseClicked(MouseEvent e)
{
clicks = e.getClickCount();
xCoord = e.getX();
yCoord = e.getY();
if(xCoord <=500 && xCoord >= 0)
{
if(clicks==1)
missed=true;
if(clicks==2)
made=true;
}
repaint();
}
}
因此,基本上,如果在球场范围内(0-500、0-400)单击鼠标,它将根据单击还是双击显示“X”或“O”。主要方法位于单独的驱动程序文件中,一切运行正常(法庭出现在屏幕上),但当我单击法庭时没有任何反应。
感谢任何帮助或建议,谢谢。
最佳答案
我假设您注释掉了 MouseListener
因为您收到错误。
问题是,当你 implements MouseListener
,您需要@Override
所有方法,而不仅仅是 mouseClicked
public class StatTracker extends JPanel implements MouseListener {
...
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
不需要的可以留空。只需将代码添加到 mouseClicked
如果这就是您所需要的。
您还需要调用super.paintComponent(g)
在你的paintComponent
方法
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
正如您从我的代码中看到的,我使用了 @Override 注释。您应该养成对尝试重写的方法执行此操作的习惯。如果覆盖成功,您将不会收到错误。如果不是,那么您将收到错误。
关于java - 使用鼠标事件 : Am I doing this correctly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584703/
我是一名优秀的程序员,十分优秀!