【问题标题】:How to save a scrollable JPanel as a jpeg image (not as a snapshot)如何将可滚动的 JPanel 保存为 jpeg 图像(而不是快照)
【发布时间】:2012-07-07 13:24:58
【问题描述】:

如何将JPanel 存储为 jpeg 图像我可以搜索的解决方案会拍摄显示的快照,这不会捕获JPanel 的所有内容作为一部分它是隐藏的。有没有办法在 jpeg 中获取整个图像。

这里提供的这个解决方案根本无法正常工作solution

我目前用来拍摄 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");
            }

【问题讨论】:

  • 来自整个 JPanel 的图形或仅来自 JScrollPane 的可见 JViewport 的图形
  • @mKorbel 来自整个 JPanel。为了查看整个图像,我们必须滚动 JPanel。我想要一个解决方案,我们可以将此图像存储为 jpeg 不需要滚动并且整个输出都在那里。
  • 到目前为止您尝试了什么?或者换句话说:展示一个展示您的问题的 SSCCE。
  • @kleopatra 让我告诉你我正在使用的方法
  • 这不是 SSCCE(Google 是你的朋友 :-)

标签: java swing awt jpanel


【解决方案1】:

你没有解释为什么这个例子不起作用。

您为什么使用窗口而不是面板?如果您使用的是示例答案,您应该参考滚动窗格中的面板。

您是在整个 JFrame 上调用paint,而不仅仅是您感兴趣的面板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2012-07-04
    • 2013-04-05
    相关资源
    最近更新 更多