我设法在图像上绘制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