Graphics Java绘画问题

Graphics Java绘画问题,graphics,paint,repaint,Graphics,Paint,Repaint,我需要一个“画画”项目的帮助。我已经建立了GUI,但是程序的实际绘图部分有问题。我画的东西一画出来就消失了,我不知道为什么 以下是我到目前为止的情况: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JPaint extends JFrame implements ActionListener, MouseListener, MouseMotionListener { int x,

我需要一个“画画”项目的帮助。我已经建立了GUI,但是程序的实际绘图部分有问题。我画的东西一画出来就消失了,我不知道为什么

以下是我到目前为止的情况:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class JPaint extends JFrame implements ActionListener, MouseListener, MouseMotionListener {

int x, y, x2, y2;
private int select = 0;
private Graphics g;
private PaintPanel DrawPanel = new PaintPanel(this);
private JPanel ButtonPanel = new JPanel();
private JTextArea Draw = new JTextArea(20,20);
private JButton jbtRed = new JButton("Red");
private JButton jbtGreen  = new JButton("Green");
private JButton jbtBlue  = new JButton("Blue");
private JButton jbtErase  = new JButton("Eraser");
private JButton jbtClear  = new JButton("Clear");
PaintPanel l=new PaintPanel(this);

public JPaint(){
    super("Java Paint");
    setSize(480,320);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    //build draw panel
    DrawPanel.setBackground(Color.WHITE);

    add(DrawPanel, BorderLayout.CENTER);
    DrawPanel.setVisible(true);
    //build button panel

    ButtonPanel.add(jbtRed);
    ButtonPanel.add(jbtGreen);
    ButtonPanel.add(jbtBlue);
    ButtonPanel.add(jbtErase);
    ButtonPanel.add(jbtClear);

    add(ButtonPanel, BorderLayout.SOUTH);
    ButtonPanel.setVisible(true);

    jbtRed.addActionListener(this);
    jbtGreen.addActionListener(this);
    jbtBlue.addActionListener(this);
    jbtErase.addActionListener(this);
    jbtClear.addActionListener(this);
    DrawPanel.addMouseMotionListener(this);
    DrawPanel.addMouseListener(this);

}


         public void actionPerformed(ActionEvent e){

             if(e.getSource() == jbtRed){
                 DrawPanel.setToolTipText("Color set to 'Red'");
                 select = 1;
                 }
             if(e.getSource() == jbtGreen){
                 DrawPanel.setToolTipText("Color set to 'Green'");
                 }
             if(e.getSource() == jbtBlue){
                 DrawPanel.setToolTipText("Color set to 'Blue'");
                 }
             if(e.getSource() == jbtErase){
                 DrawPanel.setToolTipText("Erase Selected");
                 }
             if(e.getSource() == jbtClear){
                 DrawPanel.setToolTipText("Drawing cleared");
                 }



         }




@Override
public void mouseDragged(MouseEvent e) {


    x = e.getX();
    y = e.getY();
    DrawPanel.repaint();



}


@Override
public void mouseMoved(MouseEvent e) {



}


@Override
public void mouseClicked(MouseEvent e) {



}


@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

}


@Override
public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

}


@Override
public void mousePressed(MouseEvent e) {

    x = e.getX();
    y = e.getY();


}


@Override
public void mouseReleased(MouseEvent e) {

    x2 = e.getX();
    y2 = e.getY();
    DrawPanel.repaint();

}

}

         class PaintPanel extends JPanel
            {
                JPaint p;
                PaintPanel(JPaint in){
                    p=in;
                }
                public void paintComponent(Graphics g)
                {

                    super.paintComponent(g);

                    // clear the screen
                    g.setColor(Color.white);


                    g.setColor(Color.RED);
                    g.drawLine(p.x, p.y, p.x2, p.y2);

                    p.x2 = p.x;
                    p.y2 = p.y;

            }

}

         class Run_JPaint {

                public static void main(String[] args){

                    JPaint P = new JPaint();

                    P.setVisible(true);

                }
            }

您可能希望删除以下代码行: 超级组件(g); 从你的PaintPanel类内部。否则,每个绘制命令的GUI都会重置屏幕


祝你好运

非常感谢,这正是我所需要的。我会投票给你的答案,但我还没有代表权。再次感谢你