Java 如何将可滚动的JPanel保存为jpeg图像(而不是快照)
如何将Java 如何将可滚动的JPanel保存为jpeg图像(而不是快照),java,swing,awt,jpanel,Java,Swing,Awt,Jpanel,如何将JPanel存储为jpeg图像我可以搜索的解决方案会对显示进行快照,这不会捕获JPanel的所有内容,因为其中一部分是隐藏的。有没有办法用jpeg格式获得整个图像 这里提供的解决方案一点也不好用 我当前用于拍摄JPanel快照的代码 if (panelx == null) { jButton3.setText("Generate Diagram"); } else { jButton3.setText("Generate Di
JPanel
存储为jpeg图像我可以搜索的解决方案会对显示进行快照,这不会捕获JPanel
的所有内容,因为其中一部分是隐藏的。有没有办法用jpeg格式获得整个图像
这里提供的解决方案一点也不好用
我当前用于拍摄JPanel快照的代码
if (panelx == null) {
jButton3.setText("Generate Diagram");
} else {
jButton3.setText("Generate Diagram");
jTextPane1
.setText(Messages.getString("statement2")); //$NON-NLS-1$
JFrame win = (JFrame) SwingUtilities
.getWindowAncestor(panelx.panelx);
Dimension size = win.getSize();
// BufferedImage image = new BufferedImage(size.width, size.height,
// BufferedImage.TYPE_INT_RGB);
BufferedImage image = (BufferedImage) win.createImage(size.width,
size.height);
Graphics g = image.getGraphics();
win.paint(g);
g.dispose();
try {
ImageIO.write(
image,
Messages.getString("Statement38"), new File(Messages.getString("statement5"))); //$NON-NLS-1$ //$NON-NLS-2$
} catch (IOException e) {
System.out.println("Image cannot be created");
}
你没有解释为什么这个例子不起作用 你为什么用窗户而不是面板?如果您使用的是示例答案,您应该参考滚动窗格中的面板
您正在调用整个JFrame上的paint,而不仅仅是您感兴趣的面板。来自整个JPanel的图形或仅来自可见的JViewportJScrollPane@mKorbel从整个JPanel。为了看到整个图像,我们必须滚动JPanel。我想要一个解决方案,我们可以将此图像存储为jpeg格式,无需滚动,整个输出都在那里。到目前为止,您尝试了什么?或者换句话说:展示一个能证明你的问题的SSCE。@kleopatra让我给你展示一下我正在使用的不是SSCE的方法(谷歌是你的朋友:-)