我設法在圖像上繪製GUI組件。但是,只能通過將JFrame
設置爲可見來完成。 JPanel.setVisible()
和validate()
沒有任何影響。如果JFrame
被註釋掉,它會繪製一個空的圖像。繪製到離屏圖像
當我想要某些功能執行離屏GUI繪畫時,彈出一個JFrame
或運行此類代碼的服務器沒有屏幕或圖形卡時,它並不整齊。
請幫幫忙,非常感謝。
import java.awt.BorderLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Snippet {
public static void main(String[] args) {
JButton test = new JButton("Test Button center");
JButton test2 = new JButton("Test Button2 south");
JButton test3 = new JButton("Test Button3 at east");
BorderLayout bl = new BorderLayout();
JPanel jp = new JPanel(bl, false);
jp.add(test2,BorderLayout.SOUTH);
jp.add(test, BorderLayout.CENTER);
jp.add(test3, BorderLayout.EAST);
// jp.validate();
// jp.setVisible(true);
// jp.show();
JFrame jf = new JFrame();
jf.getContentPane().add(jp, BorderLayout.CENTER);
jf.pack();
jf.setVisible(true);
//jp.setBounds(10, 10, 400, 400);
BufferedImage b = new BufferedImage(jf.getWidth(), jf.getHeight(), BufferedImage.TYPE_INT_ARGB);
jp.paintAll(b.createGraphics());
File output = new File("f:/screenie.png");
try
{
ImageIO.write(b, "png", output);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
對不起,你的問題不清楚。您的問題是如何在沒有屏幕或圖形卡的系統上將組件呈現給圖像? – ControlAltDel
似乎是這樣。或者只是將屏幕打印到圖像上,然後發送給客戶端。 – Shark
它是第一個:在沒有屏幕或圖形卡的系統上將圖像渲染到圖像 – Johnny