加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 08:43:26 所属栏目:Java 来源:网络整理
导读:我想在图像zoomIN和zoomOUT时调整滚动条,JPanel和JScrollpane上的我的图像显示包含JPanel. 解决方法 对于您更新的问题: 您需要使用新的图像大小调用setPreferredSize(使用此测试您的应用程序). 从以下位置更改zoomIN和zoomOut: can.setSize(imgSize); 至:
我想在图像zoomIN和zoomOUT时调整滚动条,JPanel和JScrollpane上的我的图像显示包含JPanel.

解决方法

对于您更新的问题:

您需要使用新的图像大小调用setPreferredSize(使用此测试您的应用程序).

从以下位置更改zoomIN和zoomOut:

can.setSize(imgSize);

至:

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,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();
    }
}

主程序:

public static void main(String[] args) throws Exception {

    final URL lenna =
        new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png");

    final JSlider slider = new JSlider(0,1000,500);
    final ImageComponent image = new ImageComponent(lenna);
    slider.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent e) {
            image.setZoom(2. * slider.getValue() / slider.getMaximum());
        }
    });

    JFrame frame = new JFrame("Test");
    frame.add(slider,BorderLayout.NORTH);

    frame.add(new JScrollPane(image));

    frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400,300);
    frame.setVisible(true);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读