[問題] 用java畫圖存成圖檔的問題

看板java作者 (加油)時間16年前 (2009/04/30 01:45), 編輯推噓4(404)
留言8則, 4人參與, 最新討論串1/1
我想要用java做像excel那種的圖表 於是想說用視窗物件中的JPanel來做 在網路上找到了如何將JPanel中的圖形存起來的方法 於是改裝了一下 變成下面的程式 但執行起來發生了一些問題 我讓JPanel會畫出一個隨機的折線圖 然後執行10次 每次的圖形都會存檔 但去查看儲存的檔案發現 天啊~ 為什麼之前的圖形都還留著 新的圖形不斷蓋上去 我的for迴圈裡明明繼承JPanel的Draw物件都是新做的啊 為什麼會有之前圖形的殘留? 不知道出了什麼問題 有人可以教教我嗎...謝謝... ps. 懷疑是ImageIO那裡的問題 因為其他物件都是新的 那部份程式碼都是抓來的 只會依樣畫壺籚.. 還是說我要把上一個JPanel關掉才再開新的才行呢...Q_Q import java.awt.*; import javax.swing.*; import java.io.*; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class Draw extends JPanel{ public Draw(){ setSize(200,100); } public void paintComponent(Graphics g){ int x1=0, y1=0, x2=0, y2=0; for(int i=0;i<20;i++){ x2+=10; y2=(int)(Math.random()*80); g.drawLine(x1,y1+10,x2,y2+10); x1=x2; y1=y2; } } public static void main(String[] args){ int num=0; for(int i=0;i<10;i++){ Draw panel=new Draw(); int width=panel.getWidth(); int height=panel.getHeight(); BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); panel.paint(g2); g2.dispose(); try { new File("testImg").mkdir(); File file=new File("testImg",(++num)+".png"); ImageIO.write(image, "png", file); }catch(Exception e) { e.printStackTrace(); } } } } -- ▄▄ ▄▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄ ▄▄ ▄▄ ▄▄▄ ▄▄▄▄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.190

04/30 02:03, , 1F
要把元件外觀畫在圖上請使用Component-printAll method
04/30 02:03, 1F

04/30 02:09, , 2F
Draw 元件劃線時要使用非黑色。
04/30 02:09, 2F

04/30 02:15, , 3F
我用print或printAll 畫出的每個圖案都不會再有之前的線條了
04/30 02:15, 3F

04/30 02:21, , 4F
可是..為什麼會這樣啊? 用print畫 背景要怎麼用黑色之外的?
04/30 02:21, 4F

04/30 09:25, , 5F
super.paint?
04/30 09:25, 5F

04/30 14:02, , 6F
paintComponent()裡用setBackground(Color.WHITE);改背景色
04/30 14:02, 6F

04/30 23:52, , 7F
我有用但沒用 事實上背景預設就是白的但用print存檔變成黑的
04/30 23:52, 7F

05/01 00:28, , 8F
在paintComponent裡 先super.paintComponent(g)清畫面就ok了
05/01 00:28, 8F
文章代碼(AID): #19-98_4J (java)