我如何获得java.awt.ImageJFrame?
我想获得一个屏幕截图JFrame(以后在我的应用程序中使用).目前,这是通过使用机器人拍摄指定所JFrame涉及的坐标和尺寸的屏幕截图来完成的.
但是,我相信有一种更好的方法:默认情况下,Swing组件在将自己绘制到屏幕上之前将它们自身渲染为双缓冲区.
有没有办法从组件中获取这些图像?
我提供了关于在Java API或工具上捕获表格数据图像的建议,以便将表格数据转换为PNG图像文件 - 当OP请求代码示例时.事实证明比我想象的更难!该JTable头从该代码写入PNG消失.


import javax.swing.*;
import java.awt.Graphics;
import java.awt.BorderLayout;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
class TableImage {
public static void main(String[] args) throws Exception {
Object[][] data = {
{"Hari", new Integer(23), new Double(78.23), new Boolean(true)},
{"James", new Integer(23), new Double(47.64), new Boolean(false)},
{"Sally", new Integer(22), new Double(84.81), new Boolean(true)}
};
String[] columns = {"Name", "Age", "GPA", "Pass"};
JTable table = new JTable(data, columns);
JScrollPane scroll = new JScrollPane(table);
JPanel p …Run Code Online (Sandbox Code Playgroud) 我有一个绘图程序,允许用户绘制线条,框,文本,甚至JPEG.
我希望能够保存用户绘制的图像,但是我对如何将用户的创建转换为我可以轻松使用的格式(Image或BufferedImage)感到有点困惑.
用户在JPanel上绘制他们的内容(让我们称之为JPanel inputPanel).如果用户单击一个按钮(让我们调用此按钮saveButton).弹出一个JFileChooser,询问将其保存到哪里,然后BAM,保存创建(我知道如何以编程方式保存图像).
有没有一种简单的方法可以以这种方式将JPanel转换或转换为Image或BufferedImage?
谷歌搜索/搜索StackOverFlow仅提供使用setIcon()将图像绘制到JPanel的解决方案,这没有帮助.