2015-10-06 24 views
1

因此,我已经做了几个月的Java,现在我正在学习Graphics。所以,我正在尝试制作一种绘画类的东西,在那里我可以用鼠标画画。没有什么真正的想法,只是让我开始的东西。只要我拖动鼠标,该程序就会绘制一个小点。它有些作品,除了它没有保存我的旧点之外。它只是创建一个新的!那将是怎样,如果有人可以帮我解决这个问题: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); 
    } 
} 

“Ploofer” 类:

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 

} 

回答

2

这种作品,除了它不保存我的旧点。它只是创建一个新的!

退房Custom Painting Approaches两个常见的方式做油画定制:

  1. 对象添加到油漆到一个ArrayList和遍历列表绘制的所有对象
  2. 抽奖,一个BufferedImage和重绘数据的BufferedImage

在你的情况我建议的方法2.

//我试图重写更新,但它并没有真正帮助

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

+0

非常感谢!我想我以前有过这样的事情,但显然我做错了一些事情!但是,它现在终于起作用了!再一次,谢谢你! – Zyphicx