package Test1;
import java.awt.*;
import javax.swing.*;
public class JScrollPanelTest extends JFrame {
public JScrollPanelTest()
{
super();
getContentPane().setLayout(null);
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.setSize(new Dimension(500,500));
final JButton button = new JButton();
button.setText("New JButton");
p.add(button);
JScrollPane sp=new JScrollPane(p);
sp.setViewportView(p);
getContentPane().add(sp, BorderLayout.CENTER);
this.setSize(new Dimension(300,300));
setVisible(true);

}
public static void main(String[] args) {
new JScrollPanelTest();
}}为什么这样不显示出滚动条出来,而且里面的按钮也显示不出来 ,这是为什么?麻烦帮帮忙

解决方案 »

  1.   

    getContentPane().setLayout(null);这句是故意找茬.
      

  2.   

    但是我去掉getContentPane().setLayout(null)这句,只有当窗体小于按钮时才会出现滚动条,那要怎样当窗体小于panel的时候自动出现滚动条
      

  3.   

    import javax.swing.*;
    import java.awt.*;
    public class JScrollPanelTest extends JFrame
    {
      JScrollPane jScrollPane1 = new JScrollPane();
      JPanel jPanel1 = new JPanel();
      JButton jButton1 = new JButton();
      public JScrollPanelTest()
      {
        try
        {
          jbInit();
          jScrollPane1.setSize(new Dimension(200,200));
          jPanel1.setPreferredSize(new java.awt.Dimension(493, 451));
        }
        catch(Exception ex)
        {
          ex.printStackTrace();
        }
      }  void jbInit() throws Exception
      {
        this.getContentPane().setLayout(null);
        jButton1.setBounds(new Rectangle(86, 21, 71, 25));
        jButton1.setText("jButton1");
        jScrollPane1.setAutoscrolls(true);
        jScrollPane1.setBounds(new Rectangle(3, 4, 303, 234));
        jPanel1.setLayout(null);
        this.getContentPane().add(jScrollPane1, null);
        jScrollPane1.getViewport().add(jPanel1, null);
        jPanel1.add(jButton1, null);  }
      public static void main(String[] args)
      {
       JScrollPanelTest test = new JScrollPanelTest();
       test.setSize(new Dimension(300,300));
       test.show();
      }
    }要用 setPreferredSize() 方法