Java 8 Graphics2D,使用点(例如点开始)拖动鼠标时徒手绘制
我正在使用Java 8 Graphics2D,使用点(例如点开始)拖动鼠标时徒手绘制,java,graphics2d,Java,Graphics2d,我正在使用Graphics2D、Point和Line2D(用于画笔)创建徒手绘图程序(用于教育目的)。我的问题是,我可以使用鼠标拖动来获得要绘制的线,但它始终从JPanel的左上角开始,直到我释放鼠标按钮的位置。我希望能够使用点(例如点开始点、端点)在移动鼠标时进行绘制,释放时停止,再次按下鼠标时在新点开始绘制。有人能帮我用鼠标监听器(鼠标标记,…按下,…释放等)编码吗 }建议: 首先,始终覆盖paintComponent,而不是paint 并始终在覆盖范围内调用super的绘制方法 这里有两
Graphics2D
、Point
和Line2D
(用于画笔)创建徒手绘图程序(用于教育目的)。我的问题是,我可以使用鼠标拖动来获得要绘制的线,但它始终从JPanel
的左上角开始,直到我释放鼠标按钮的位置。我希望能够使用点
(例如点开始点、端点)在移动鼠标时进行绘制,释放时停止,再次按下鼠标时在新点开始绘制。有人能帮我用鼠标监听器(鼠标标记,…按下,…释放等)编码吗
}建议:
- 首先,始终覆盖paintComponent,而不是paint
- 并始终在覆盖范围内调用super的绘制方法
- 这里有两个选项:
- 备选案文1:
- 创建一个
作为实例字段ArrayList
- 在鼠标/鼠标情感监听器中创建行并放入此列表
- 然后调用repaint并在paintComponent方法中遍历该列表,即绘制线条
- 创建一个
- 备选案文2:
- 创建一个BuffereImage作为实例字段
- 在您的鼠标/鼠标中,情感监听器绘制到该图像上
- 然后在paintComponent方法中绘制图像
- 无论哪种方式,新行以mousePressed开始,以mouseReleased完成
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) {
}