import java.awt.*;
import java.awt.event.*;
public class AWTDrawing2{
public static void main(String[] args){
Frame frame = new Frame("图片");
MyCanvas mc = new AWTDrawing2().new MyCanvas();
Image image = Toolkit.getDefaultToolkit().getImage("src\\image\\{0E292FB7-2E5E-D59D-03B6-EB712AD47410}.jpg");
mc.setImage(image);
ScrollPane sp = new ScrollPane();
sp.add(mc);
frame.add(sp,"Center");
frame.setSize(400,400);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
frame.setVisible(true);
}
//nested class MyCanvas
class MyCanvas extends Canvas{
private Image im;
public void setImage(Image im){
this.im = im;
}
public void paint(Graphics g){
g.drawImage(im,0,0,this);
}
}
}我读取的图片是一张大图,height超过屏幕的像素,我加了Scrollbar,为什么还不能完全显示呢?

解决方案 »

  1.   

    把ScrollPanel再加到另一个Panel中成为他的component之一
      

  2.   

    呃。。你说的办法我试但是不行啊
    我用了一种方法:先取得image_width和image_height,如果这两个有一个大于画布的大小,就把超过画布大小的那个数值设为画布的大小,然后根据纵横比来算出图片的另一个边的数值,这样就可以完全显示了。。
    不知道还有没有别的方法。。
      

  3.   

    放大图片的时候,我想用ScrollPanel,怎么解决不能完全显示的问题?