我正在使用Graphics2D
,Point
和Line2D
(用于BrushStroke)来创建一个自由绘图程序(用于教育目的)。我的问题是,我可以使用鼠标拖动来绘制线条,但它始终始于从左上角JPanel
到释放鼠标按钮的位置。我希望能够使用Point
(E.G Point startPoint,endPoint)在鼠标正在移动时绘制,释放时停止绘制,并在再次按下鼠标时开始绘制新点。有人可以通过鼠标监听器(mousedragged,...按下,...释放等)来帮助我进行编码吗?Java 8 Graphics2D,使用鼠标拖动鼠标时使用点(E.G Point pointStart)
public class GraphicsPanel extends JPanel implements MouseMotionListener, MouseListener {
private Color color;
private JColorChooser cc;
private JComboBox paintToolBox;
Point pointStart = null;
Point pointEnd = null;
GraphicsPanel(JColorChooser cc, Color color, JComboBox paintToolBox) {
this.cc = cc;
this.color = color;
this.paintToolBox = paintToolBox;
addMouseMotionListener(this);
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(cc.getColor());
Line2D line2D = new Line2D.Double(pointStart, pointEnd);
if (pointStart != null || pointEnd != null) {
g2d.draw(line2D);
}
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
@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) {
}
}
参见[自定义绘画途径(https://tips4java.wordpress.com/2009/05/08/custom-painting-approaches /)来进行这种绘图的两种常用方法的工作示例。这些示例绘制了一个矩形,但概念是相同的。 – camickr
谢谢你,将调查它。 –