java中的gui设计问题

java中的gui设计问题,java,swing,Java,Swing,我正在设计一个gui,它在面板上显示一个图像,并且有一个滑块可以放大和缩小图像。但问题是:我的图像会被放大,但不会在滚动窗格滚动窗格中显示图像 ImagePanel imageP = new ImagePanel("D:/ScannedImage1.jpg"); JSlider slid = (JSlider) evt.getSource(); float value = (float) slid.getValue(); imageP.setScale(value); imagePanel.ad

我正在设计一个gui,它在面板上显示一个图像,并且有一个滑块可以放大和缩小图像。但问题是:我的图像会被放大,但不会在滚动窗格滚动窗格中显示图像

ImagePanel imageP = new ImagePanel("D:/ScannedImage1.jpg");
JSlider slid = (JSlider) evt.getSource();
float value = (float) slid.getValue();
imageP.setScale(value);
imagePanel.add(new JScrollPane(imageP), BorderLayout.CENTER);
imagePanel.validate();
imagePanel类paintComponent方法的代码

super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
    RenderingHints.VALUE_INTERPOLATION_BICUBIC);
int w = getWidth();
int h = getHeight();
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
double x = (w - scale * imageWidth) / 2;
double y = (h - scale * imageHeight) / 2;
AffineTransform at = AffineTransform.getTranslateInstance (x, y);
at.scale(scale, scale);
g2.drawRenderedImage(image, at);
难道不是:

imageP.add(new JScrollPane(), BorderLayout.CENTER);
imageP.validate();
ImagePanel.add(new JScrollPane(), BorderLayout.CENTER);
ImagePanel.validate();
如果不是,并且您确实试图直接从类调用,那么不应该是:

imageP.add(new JScrollPane(), BorderLayout.CENTER);
imageP.validate();
ImagePanel.add(new JScrollPane(), BorderLayout.CENTER);
ImagePanel.validate();

add()和validate()方法应该是静态的,否则应该使用第一个示例

因为
JScrollPane
依赖于客户端的首选大小,您可能需要以反映缩放大小的方式覆盖
ImagePanel
getPreferredSize()
方法。

显示ImagePanel的代码。你的问题很可能出现在那里,或者出现在ImagePath中。他是一个新用户,也许他问了很多问题,但他们还没有提供任何好的(或者根本没有)答案?他几乎所有的问题都是非常基本的,有足够好的答案,但只有一个接受。