试图在JPanel上画一条线,但只画一个点[重复]

问题描述 投票:1回答:1
我正在尝试制作一个能够在JPanel的白色背景上绘制线条的程序。我还有其他类可以选择颜色和宽度大小,但现在我只是想弄清楚如何绘制线条。这是我的“ DrawingPanel”类,其中包含我将要绘制的JPanel的代码。现在发生的是,如果我单击鼠标并在屏幕上拖动鼠标,鼠标后面会出现一个点,但是我希望用鼠标画一条线。请帮助。

import javax.swing.*; import java.awt.event.*; import java.awt.event.MouseMotionListener; import java.awt.*; import java.awt.Graphics; public class DrawingPanel extends JPanel { private Graphics g; private int x, y, startx, starty; public DrawingPanel () { setBackground(Color.WHITE); addMouseMotionListener(new MouseMotionSensor ()); } public void paintComponent (Graphics g) { //super.paintComponent(g); g.setColor(Color.BLACK); System.out.println(x + " " + y); g.drawLine(startx,starty,x,y); } public class MouseMotionSensor implements MouseMotionListener, MouseListener { public void mouseDragged(MouseEvent e) { x = e.getX(); y = e.getY(); repaint(); startx = x; starty = y; } public void mousePressed(MouseEvent e) { startx = e.getX(); starty = e.getY(); } public void mouseMoved(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} } }

java swing graphics jpanel draw
1个回答
2
投票
您的问题可能是,在mouseDragged中,您同时拖动了startx和starty,并且在拖动鼠标时同时更改了x和y。拖动鼠标时,您希望起始位置(startx和starty)相同,并且希望终止位置(x和y)发生变化,因此请删除mouseDragged中的这两行,以便仅更改x和y。
© www.soinside.com 2019 - 2024. All rights reserved.