Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用鼠标在画布上绘制线条而不使用Swing_Java_Graphics_Awt - Fatal编程技术网

在java中使用鼠标在画布上绘制线条而不使用Swing

在java中使用鼠标在画布上绘制线条而不使用Swing,java,graphics,awt,Java,Graphics,Awt,我的问题与这个问题相似 我的问题是,当窗口最小化和最大化时,绘制的线每次都消失了 但我的工作是完全不同的,因为我只使用awt组件,没有swing 有人能帮我解决这些问题吗 getGraphics从来不是执行自定义绘制的写入方式 从通读开始,更好地理解绘画是如何工作的,以及你应该如何使用它 简单的答案是,您需要维护已绘制内容的模型,以便在每次绘制过程中可以重新绘制 比如说, import java.awt.*; import java.awt.event.*; class Drawing exte

我的问题与这个问题相似

我的问题是,当窗口最小化和最大化时,绘制的线每次都消失了

但我的工作是完全不同的,因为我只使用awt组件,没有swing

有人能帮我解决这些问题吗

getGraphics从来不是执行自定义绘制的写入方式

从通读开始,更好地理解绘画是如何工作的,以及你应该如何使用它

简单的答案是,您需要维护已绘制内容的模型,以便在每次绘制过程中可以重新绘制

比如说,

import java.awt.*;
import java.awt.event.*;
class Drawing extends WindowAdapter implements MouseMotionListener, MouseListener, ComponentListener {

    Frame f;
    Canvas c;
    int X=400,Y=400;
    int px=-1,py=-1;
    int x,y;

    public Drawing() {
        f=new Frame("Drawing - Canvas");
        f.addWindowListener(this);
        f.addComponentListener(this);
        f.setSize(X,Y);
        c=new Canvas();
        f.add(c);
        c.addMouseMotionListener(this);
        c.addMouseListener(this);
        f.setVisible(true);
    }

    public void componentResized(ComponentEvent e) {}
    public void componentHidden(ComponentEvent e) {}
    public void componentMoved(ComponentEvent e) {}
    public void componentShown(ComponentEvent e) {}

    public void mouseMoved(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) {
        int x,y;
        x=e.getX();
        y=e.getY();
        Graphics g=c.getGraphics();

        if(px!=-1) {    
            g.drawLine(px,py,x,y);
        }
        else {
            g.drawLine(x,y,x,y);
        }

        px=x;
        py=y;
    }

    public void mouseReleased(MouseEvent e) {
        this.X=400; this.Y=400;
        this.px=-1; this.py=-1;
    }

    public void windowClosing(WindowEvent e) {
        f.dispose();
    }

    public static void main(String[] args) {
      Drawing c=new Drawing();
    }   
}