我用一个固定大小的JPanel来加载图像,由于图像大于窗口大小,每次只能显示一部分图像,怎样才能将图像完全显示出来或者是用滚动条来查看图像,如果图像小于窗口的话又应该怎么办??

解决方案 »

  1.   

    滚动条可以用ScrollPane
    要显示完整图像可以读取图像后获得其宽高数据然后改变frame大小
      

  2.   

    JPanel大小是固定的,我是想要通过缩放图像来适合JPanel,然后我用ScrollPane试过了,还是不行
      

  3.   

    用Graphics 类 的抽象方法drawImage
    public abstract boolean drawImage(Image img,
                                      int x,
                                      int y,
                                      int width,
                                      int height,
                                      ImageObserver observer)
    绘制指定图像中已缩放到适合指定矩形内部的图像。 
    图像绘制在此图形上下文坐标空间的指定矩形内部,并且如果需要,则进行缩放。透明像素不影响该处已存在的像素。 
    此方法在任何情况下都立刻返回,甚至在整个图像没有为当前输出设备完成缩放、抖动或转换的情况下也是如此。如果当前的输出表示尚未完成,则 drawImage 返回 false。随着更多的图像可用,装入图像的进程将通过调用图像观察者的 imageUpdate 方法来通知它。 
    图像的缩放版本不一定立刻是可用的,因为已经为此输出设备构造了图像的非缩放版本。每种大小的图像可以被分别缓存,并由各自图像产生序列中的原始数据生成。 
    参数: 
    img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。 
    x - x 坐标。 
    y - y 坐标。 
    width - 矩形的宽度。 
    height - 矩形的高度。 
    observer - 当转换了更多图像时要通知的对象。
      

  4.   

    ScrollPane
    先获取图像的大小
    然后用楼上的方法写在paintComponent中
    然后setPreferredSize