我想调整图像zoomIN和zoomOUT时的滚动条,JPanel和JScrollpane上的我的图像显示包含JPanel。
答案 0 :(得分:6)
您需要使用新的图片尺寸调用setPreferredSize
(使用此测试您的应用程序)。
来自{/ 1}}和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, 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的首选大小。