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:程序不';不要保存旧图形_Java_Swing_Jpanel_Paintcomponent - Fatal编程技术网

Java:程序不';不要保存旧图形

Java:程序不';不要保存旧图形,java,swing,jpanel,paintcomponent,Java,Swing,Jpanel,Paintcomponent,所以,我已经学习Java几个月了,现在我正在学习图形。所以,我想做一种画画的东西,在那里我可以用我的鼠标画画。没什么特别的,只是一些让我开始的东西。每当我拖动鼠标时,程序只画一个小点。除了不能保存我的旧点之外,它有点起作用了。它只是创造了一个新的!如果有人能帮我解决这个问题,我将不胜感激: 主要类别: import javax.swing.JFrame; public class Test{ public static void main(String args[]){

所以,我已经学习Java几个月了,现在我正在学习图形。所以,我想做一种画画的东西,在那里我可以用我的鼠标画画。没什么特别的,只是一些让我开始的东西。每当我拖动鼠标时,程序只画一个小点。除了不能保存我的旧点之外,它有点起作用了。它只是创造了一个新的!如果有人能帮我解决这个问题,我将不胜感激:

主要类别:

import javax.swing.JFrame;

public class Test{
    public static void main(String args[]){

        Ploofer ploof = new Ploofer();
        PumpkinPie f = new PumpkinPie(ploof);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(1000,1000);
        f.setResizable(false);
        ploof.setSize(1000,1000);
        f.add(ploof);
        f.setVisible(true);
    }
}
“普洛弗”级:

“南瓜”类:

除了不能保存我的旧点之外,它有点起作用了。它只是创造了一个新的

查看两种常见的自定义绘制方法:

  • 将要绘制的对象添加到ArrayList,并在列表中迭代以绘制所有对象
  • 绘制到BuffereImage并重新绘制BuffereImage
  • 在你的情况下,我推荐方法2

    //我试图覆盖更新,但没有真正的帮助


    不要覆盖update()。没有理由这么做。这是一种旧的AWT方法,在Swing中不需要它。

    非常感谢!我想我以前有过类似的经历,但显然我做错了什么!但是,它现在终于起作用了!再次感谢你!
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    
    import javax.swing.JPanel;
    
    public class Ploofer extends JPanel{
    
        PumpkinPie pObj = new PumpkinPie(this);
    
        @Override
        public void paintComponent(Graphics g){
    
            super.paintComponent(g);
    
            Graphics2D g2d = (Graphics2D) g;
    
            this.setBackground(Color.WHITE);
    
            g2d.setColor(new Color(190, 50, 0));
    
            if(pObj.draw==true){
                g2d.fillRect(pObj.x, pObj.y, 2, 2);
                pObj.draw = false;
            }
        }
    
        @Override
        public void update(Graphics g){
            paint(g);
        }
    
        //I tried to override update, but it didn't really help
    
    }
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    
    import javax.swing.JPanel;
    
    public class Ploofer extends JPanel{
    
        PumpkinPie pObj = new PumpkinPie(this);
    
        @Override
        public void paintComponent(Graphics g){
    
            super.paintComponent(g);
    
            Graphics2D g2d = (Graphics2D) g;
    
            this.setBackground(Color.WHITE);
    
            g2d.setColor(new Color(190, 50, 0));
        /*  g2d.fillRect(475, 475, 50, 50);
            g2d.drawString("^Red^", 484, 540); */
    
            if(pObj.draw==true){
                g2d.fillRect(pObj.x, pObj.y, 2, 2);
                pObj.draw = false;
            }
        }
    
        @Override
        public void update(Graphics g){
            paint(g);
        }
    
        //I tried to override update, but it didn't really help
    
    }