簡體   English   中英

在沒有JPanel的情況下使用Java繪圖

[英]Drawing in Java without a JPanel

我正在編寫一個圖形用戶界面來繪制xy軸上的數據。 它是用Java Swing編寫的,所以我有一個包含整個GUI的JFrame GUI的一個組件是JPanel ,它構成了繪制數據的區域。 我使用Graphics2D來繪圖。

我正在嘗試對此程序進行命令行擴展。 這個想法是用戶可以指定他們想要在配置文件中繪制的數據。 這允許有趣的參數掃描,節省大量時間。

當我嘗試獲取要繪制的Graphics對象時,會發生此問題。 我創建了繪圖的JPanel ,但是當我調用paintComponent()時, Graphics對象為null。

此外,當您運行程序(再次從命令行)時,它會從您嘗試執行的任何其他操作中竊取焦點(如果此程序在后台運行)。 反正有沒有解決這個問題? 你必須創建一個JPanel來繪圖嗎?

感謝您提供的任何幫助!

PS當我說我從命令行運行程序時,我的意思是說你沒有使用GUI。 所有的繪圖等都是​​在沒有界面的情況下完成的。 另外,我知道你無法實例化Graphics對象。

使用java.awt.image.BufferedImage

BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();

//.. draw stuff ..

ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
writer.setOutput(ImageIO.createImageOutputStream(new File("myimage.png"));
writer.write(image);

如果您不使用GUI,則需要使用無頭模式這將為您提供適當的圖形環境。 您必須使用諸如的選項執行

java -Djava.awt.headless=true 

或者在主類中設置屬性,例如:

System.setProperty(“java.awt.headless”,“true”);

請查看鏈接以獲取更多程序化示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM