如何使用JPanel和Jframe在(X,Y)上产生鼠标事件

问题描述 投票:0回答:1

我正在尝试使用鼠标侦听器来绘制点,当单击面板时,我正在绘制点,然后,如果我花费了很多,我希望将其相对地保持在面板的同一位置。我试图将x除以getWidth并将y除以getHeight,但它也无法正常工作。

这里是代码的一点高峰,对于帮助者来说是非常重要的:)

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Grid extends JPanel {

    private ArrayList<Point> graph;

    public Grid() {
        this.graph = new ArrayList<Point>();
        addMouseListener(new Listener());
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (graph.size() != 0) {
            if (graph.size() == 1) {
                Point temp = graph.get(0);
                g.drawOval(temp.getX(), temp.getY(), 3, 3);
            } else {
                for (int i = 0; i < graph.size() - 1; i++) {
                    Point temp = graph.get(i);
                    Point next = graph.get(i + 1);
                    g.drawOval(temp.getX(), temp.getY(), 3, 3);
                    g.drawOval(next.getX(), next.getY(), 3, 3);
                    g.drawLine(temp.getX(), temp.getY(), next.getX(), next.getY());
                }
            }
        }
    }

    private class Listener implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent e) {
            graph.add(new Point(e.getX(), e.getY()));
            repaint();

        }

        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub

        }
    }
 }
java jframe jpanel
1个回答
0
投票

[好家伙,我找到了答案,我每次在Point类中使用paintComponent时都记得相对数字,然后将此数字乘以该数字将使我每次都保存正确的关系。

© www.soinside.com 2019 - 2024. All rights reserved.