gpt4 book ai didi

java - 使用鼠标事件 : Am I doing this correctly?

转载 作者:行者123 更新时间:2023-12-01 13:30:43 27 4
gpt4 key购买 nike

我对 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com