2010-01-26 53 views
2

我一直在做一個任務,並且完成了所有的需求。該項目將比較線性搜索算法和二分搜索在運行時的差異。我有一個圖表類,它將這些搜索的結果放在xy圖中。輸出一個jFrame到jpeg或位圖

圖形對象是擴展JFrame的Turtle類。有什麼辦法可以將該圖形對象轉換爲位圖並保存以供將來打印?

教授要求打印結果。由於我不想每次運行程序時打印輸出,因此我寧願將圖形結果保存在指定的文件夾中,而不是使用屏幕抓取。

不幸的是,我還沒有拿出谷歌或這裏的任何答案。這是甚麼可能嗎?

+2

你看過Component.createImage(int,int)嗎? – defectivehalt 2010-01-26 15:28:52

+0

這可能工作,謝謝! – Jason 2010-01-26 15:59:24

回答

4

另一種方法是告訴您的Componentpaint()本身變成BufferedImage,如在此example中所見。由JFramegetContentPane()方法返回的Container是合適的。

+0

這個例子是我的問題的一個非常優雅的解決方案。我會嘗試一下。 – Jason 2010-01-26 22:11:28

2

您可以將該區域的邊界傳遞給Robot.createScreenCapture(Rectangle)方法以創建該區域的BufferedImage。將截圖保存爲圖像文件的最簡單方法是使用ImageIO類。

+0

機器人唯一的缺點是我無法知道圖表的屏幕座標是什麼,因爲它很少在同一個空間打開兩次。但是ImageIO似乎完美適合我的需求 – Jason 2010-01-26 16:01:34

+2

您可以使用'SwingUtilities.convertPointToScreen(Point)'來計算任何組件的屏幕座標。 – Nate 2010-01-26 17:16:11