Java 使用鼠标移动和拉伸Line2D形状
我想用鼠标移动和拉伸Line2D形状。我试过了,但遇到了一些问题。在移动时,它突然向不同的方向移动。我面临以下问题:Java 使用鼠标移动和拉伸Line2D形状,java,swing,mouseevent,java-2d,mouselistener,Java,Swing,Mouseevent,Java 2d,Mouselistener,我想用鼠标移动和拉伸Line2D形状。我试过了,但遇到了一些问题。在移动时,它突然向不同的方向移动。我面临以下问题: shape.setLine(p1,p2); 编辑: 早些时候,我遇到了一些问题 但我可以让它现在工作,因此我想在这里张贴 公共静态无效字符串[]args{ JFrame=新的JFrameLines frame.add(new JComponent() { private Shape line = null; { l
shape.setLine(p1,p2);
编辑:
早些时候,我遇到了一些问题
但我可以让它现在工作,因此我想在这里张贴
公共静态无效字符串[]args{
JFrame=新的JFrameLines
frame.add(new JComponent() {
private Shape line = null;
{
line = new Line2D.Double(100, 100, 200, 200);
prevPoint = new Point();
newPoint = new Point();
MouseAdapter mouseAdapter = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
prevPoint = e.getPoint();
System.out.println("Prev Point=" + prevPoint.toString());
repaint();
}
@Override
public void mouseDragged(MouseEvent e) {
int dx = 0;
int dy = 0;
dx = (int) (prevPoint.x - e.getPoint().getX());
dy = (int) (prevPoint.y - e.getPoint().getY());
Line2D shape = (Line2D) line;
int x1 = (int) (shape.getX1() - dx);
int y1 = (int) (shape.getY1() - dy);
int x2 = (int) (shape.getX2() - dx);
int y2 = (int) (shape.getY2() - dy);
Point startPoint = new Point(x1, y1);
Point endPoint = new Point(x2, y2);
if (shape != null) {
shape.setLine(startPoint, endPoint);
prevPoint = e.getPoint();
repaint();
}
}
@Override
public void mouseReleased(MouseEvent e) {
repaint();
}
};
addMouseListener(mouseAdapter);
addMouseMotionListener(mouseAdapter);
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint(Color.BLUE);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
if (line != null) {
g2d.draw(line);
}
}
});
frame.setSize(650, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
谢谢您需要包含更多信息。请尽量提供一个最少的代码示例来演示问题。要更快地获得更好的帮助,请在问题的扩展部分贴上or.plus 1