定义了一个JPanel panel, 然后将这个panel添加到一个scrollpane上,JScrollPane  sp  =  new  JScrollPane(panel);  然后将这个sp和另外一个Jpanel panel2放在一个frame上。 
f.getContentPane().add(adminpanel,BorderLayout.NORTH);    //adminpanel是另外一个面板
f.getContentPane().add(sp,BorderLayout.CENTER);      //主界面panel 然后有多少组件就add到panel上,这个panel添加到scrollpane。通过以上代码将scollpane也就是sp添加到frame上。选择BorderLayout.CENTER方式滚动条就是有效的了。
问题是sp中的panel添加的组件总是在panel中居中显示。我希望是由panel顶部开始显示。请问该怎么办呢?  
(我之前发帖问了这个问题,但是很多人没看明白,希望大家看明白我的意思,谢谢大家帮助。分数我可以再追加)

解决方案 »

  1.   

    panel.setLayout(new java.awt.GridLayout(int 行, int 列));
    给你说的那个panel添加网格布局...那么其中的组件就是从最开头添加起,先行后列
      

  2.   

    楼主还需要在swing的布局管理器上下点功夫,
    否则今天的问题别人帮忙解决了,明天又会遇到其它问题。
      

  3.   

    将sp里面的panel设置一下布局
    流式new FlowLayout(FlowLayout.LEFT)左对齐
      

  4.   

    new FlowLayout(FlowLayout.LEFT)这样的布局是可以,但是这样添加的每一个组件是接着上一个组件的后面,而不是没添加一个新组件是新起一行。我现在需要的是在新行中添加下一个组件
      

  5.   

    请尝试使用GridBagLayout。
    需要使用GridBagConstraints c = new GridBagConstraints()
    例如你添加第一个,可设置c.gridX = 0, c.gridY = 0, 
    c.anchor = GridBagConstraints.WEST ;第二个,c.gridY = 1其他的属性如gridWidth, gridHeight我没有设,如有需要请自行设置。
    记得每次setConstraints(你的组件, c)。
      

  6.   

    你要先把布局器设置为null,之后设置坐标,就可以实现放在任意的位置
      

  7.   

    楼主该好好研究下布局管理器啊。
    用BoxLayout,看例子:import java.awt.Container;import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;public class TestFrame extends JFrame{

    public TestFrame() {
    Container c = getContentPane();
    JPanel p = new JPanel();
    p.setLayout( new BoxLayout(p,BoxLayout.Y_AXIS) );
    p.add(new JButton("look me!"));
    p.add(new JButton("look me!"));
    c.add( new JScrollPane(p) );
    this.setDefaultCloseOperation( EXIT_ON_CLOSE );
    this.setSize( 500,600 );
    this.setLocationRelativeTo( null );
    }

    public static void main( String[] args ) {
    new TestFrame().setVisible( true );
    }}
      

  8.   

    你把panel布局设成null然后用坐标定位吧
      

  9.   

    setHorizontalAlignment(SwingConstants.CENTER);