java - java在屏幕上显示鼠标坐标的问题

标签 java swing graphics

我试图在我的 JPanel 中显示鼠标坐标(数学坐标),但我得到的每个坐标都在另一个坐标之上,无法弄清楚原因。 这是我的代码:

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.applet.*;

import javax.swing.JPanel;
import javax.swing.event.MouseInputAdapter;

public class drawarea extends JPanel {

    int n;
    private Point mouseCoords = null;
    int UNIT = 20;

    drawarea() {
        super();
        setBackground(Color.white);
        addMouseMotionListener(new MouseInputAdapter() {

            public void mouseMoved(MouseEvent e) {
                super.mouseMoved(e);
                mouseCoords = new Point(e.getX(), e.getY());
                repaint();
            }

            /**
             * @see java.awt.event.MouseListener#mouseExited(MouseEvent)
             */
            public void mouseExited(MouseEvent e) {
                super.mouseExited(e);
                mouseCoords = null;
                repaint();
            }
        });
        setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
    }

    public void paint(Graphics g) {

        //draw axis x and y
        g.setColor(Color.red);
        g.drawLine(0, r.height / 2, r.width, r.height / 2);
        g.drawLine(r.width / 2, 0, r.width / 2, r.height);

        Graphics2D g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        dessinBoule(g2);
    }

    private void dessinBoule(Graphics2D g) {
        // if mouse isnt inside the ara where
        // i want the coordinates to bes displayed
        if (mouseCoords == null) {
            return;
        }
        g.setColor(Color.BLACK);

        int decPolice = 15;

        g.drawString("x = " + getFormatedString("" + mouseCoords.x)
            + " , y = " + getFormatedString("" + mouseCoords.y), 2, 15);
    }

    private String getFormatedString(String s) {
        if (s.length() > 4) {
            return s.substring(0, 3);
        }
        return s;
    }
}

谢谢。

最佳答案

您正在您的图形区域上绘图,因此 g.drawString(...) 在已经存在的内容之上绘制一个字符串。您必须首先通过在背景颜色中绘制一个矩形来删除那里的内容,或者使用您可以使用单独的 paint(...) 方法管理的单独组件。

关于java - java在屏幕上显示鼠标坐标的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845165/

相关文章:

java - eclipse 插件 - 像处理 java 文件一样处理非 java 扩展文件

java - Spring Boot 2.7.0 和每个模块 2 个 jar 的 Maven 构建问题

java - 错误“找不到符号 - 方法 isCompleted()

java - 计算堆中的空闲空间?跟踪最后一次插入?

java - 我无法将整数作为数组的元素

Java GUI Windows 根本不出现

java - 如何使用 GridBagLayout 和 GridLayout 实现最佳对齐?

Java编写png文件使一切透明

c# - 字体非常难看

Java游戏看起来运行很慢?