如何在Swing中使用图像zoomIN和zoomOUT调整滚动条

时间:2011-09-07 07:13:24

标签: java image swing

我想调整图像zoomIN和zoomOUT时的滚动条,JPanel和JScrollpane上的我的图像显示包含JPanel。

2 个答案:

答案 0 :(得分:6)

您的更新问题:

您需要使用新的图片尺寸调用setPreferredSize(使用此测试您的应用程序)。

来自{/ 1}}和zoomIN的更改:

zoomOut

要:

can.setSize(imgSize);

实施例

您需要更新滑块更改的首选大小。我写了一个小程序(下面的代码)来生成这个截图(带缩放控制):

screenshot


图片组件代码:

can.setPreferredSize(imgSize);

主程序:

static class ImageComponent extends JComponent {

    final BufferedImage img;

    public ImageComponent(URL url) throws IOException {
        img = ImageIO.read(url);
        setZoom(1);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Dimension dim = getPreferredSize();
        g.drawImage(img, 0, 0, dim.width, dim.height, this);
    }

    private void setZoom(double zoom) {
        int w = (int) (zoom * img.getWidth());
        int h = (int) (zoom * img.getHeight());
        setPreferredSize(new Dimension(w, h));
        revalidate();
        repaint();
    }
}

答案 1 :(得分:1)

您应该根据可见的图像尺寸变化调整JPanel的首选大小。