使用JScrollPane,JBuilder中再JPanel的右边第二个

解决方案 »

  1.   

    jsp.add(this); 
    add(jsp,BorderLayout.CENTER);
    ????要这样↓
    jsp.getViewport().add(image);
    add(jsp,BorderLayout.CENTER);
      

  2.   

    this指的是Frame
      JScrollPane jScrollPane1 = new JScrollPane();//滚动条!    this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
    //jEditorPane2是希望有滚动条显示的控件
        jScrollPane1.getViewport().add(jEditorPane2, null);
    这是一个(装饰)decoration模式的实例
      

  3.   

    谢谢
    teva(用正确理论引导人)
      

  4.   

    下面是改了的程序,但是滚动条,不能滚动!!图片也大于
    显示面积!!!奇怪!!!
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import javax.swing.*;
    import java.net.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */public class Trive extends Applet
    {
      Image image ;
      JScrollPane jsp = new JScrollPane();
      Draw drawImage ;
     // Construct the applet;
      public Trive() {
      }
      //Initialize the applet
      public void init() {
        setLayout(new BorderLayout());
        MediaTracker tracker = new MediaTracker(this);
        jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        image = getImage(getDocumentBase(),"shaoguansq.jpg");
        drawImage = new Draw(image);
        tracker.addImage(image,0);
        try{
          tracker.waitForAll();
        }
        catch(InterruptedException e)
        {
           e.printStackTrace();
        }
        jsp.getViewport().add(drawImage,null);
        add(jsp,BorderLayout.CENTER);
        this.validate();
      }
     /* public void paint(Graphics g){
       int width = image.getWidth(this);
       int height = image.getHeight(this);
        g.drawImage(image,0,0,width/4,height/4+10,this);
      }*/
     
    }
    class Draw extends JPanel{
      private Image map;
      private int width,height;
      public Draw(Image image)
      {
         map = image ;
         width = map.getWidth(this);
         height = map.getHeight(this);
      }
      public void paint(Graphics g)
      {
         g.drawImage(map,0,0,Draw.this); 
      }
    }
    还有一个问题就是在Draw类中的 g.drawImage(map,0,0,Draw.this); 改为
     g.drawImage(map,0,0,with/4,height/4,Draw.this); 
    则也不能显示图片,
    但是用Trive类中的paint()就可以显示图片!!奇怪!!!
    望高手解答
      

  5.   

    你的image是
     public void paint(Graphics g)
      {
         g.drawImage(map,0,0,Draw.this); 
      }到panel中的,在panel中不算占大小,就像背景图,不信你可add几个button或label这类的,会覆盖在其表面,如果多加几个label之类的(长度超过Frame)则会出现滚动条
    jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    只是让滚动条总是显示,而背景不算大小,所以就没出现滚动块,而只有个框框显示解决办法是不用paint方法,而是将其包含在某个组件中,在add进去
    我这儿没现成的api,你自己先找一下吧
    有其它解决办法别忘了告诉俺一声