结构这样
┳JFrame
┗━┳JScrollPane
    ┗━┳JPanel
        ┗━┳JButton1
            ┣JButton2
            ┗JButton3
我使用到了JScroolPane, 但是当Panel里面的控件很多时,滚动条不会自动出来.
代码如下.诸位帮我实现:
1.控件可以自定义大小, 如: JButton可以由程序设计者控制其大小和位置.
2.当控件太大,超过窗体大小时,可以自动显示滚动条.
3.注意JPanel里面放的控件多于一个.3条同时具备.
public class myFrame extends JFrame
{
    private JButtonbt1 = new myButton("bt1======================");
    private JButtonbt2 = new myButton("bt2======================");
    private JButtonbt3 = new myButton("bt3======================");
    private JPanel  p = new JPanel ();
    private JScrollPane sp = new JScrollPane (p);
    public myFrame()
    {
        getContentPane().add(sp);
        p.setLayout(null);
p.add(bt1,BorderLayout.CENTER );
bt1.setLocation(40,40 );
p.add(bt2,BorderLayout.WEST  );
bt2.setLocation(80,80);
p.add(bt3,BorderLayout.EAST);
    }}

解决方案 »

  1.   

    p.setLayout(null);
    这句可以去掉吧。
      

  2.   

    你的component用的是boryderlayout,为什么container的layoutmanager要设置成null??
    应该是:
    p.setLayout(new BorderLayout());
      

  3.   

    要用BorderLayout的话,不能用坐标,否则p.setLayout(null),这样可以用坐标
      

  4.   

    你既然用null那就不该在后面又用BorderLayout好象把Layout 设成null后JScrollPane 就不会实现滚动;即使你强制把滚动条显示出来也只是一个摆设,而其他Layout都行,十分怀疑这是jdk的一个bug,最起码我还没找到解决的办法,还是先换其他的Layout吧,通过多种布局的使用完全可以实现随心所欲的摆放组件嘛。
      

  5.   

    小弟的
    p.setLayout(null);
    只是为了让兄弟们看到运行效果.
    其实这里把layout设置成null肯定是没有滚动条的,
    但是如果设置成JDK中提供的Layout, 不能有效控制组件大小.(包括GridbagLayout在内)问题已经解决,
    编写自己的Layout Manager,或者使用三方提供的Layout manager