当前位置: 代码迷 >> J2SE >> 添加到JPanel的组件比如按钮之类的总是自动居中显示,小弟我希望能由顶部开始显示
  详细解决方案

添加到JPanel的组件比如按钮之类的总是自动居中显示,小弟我希望能由顶部开始显示

热度:328   发布时间:2016-04-24 01:27:07.0
添加到JPanel的组件比如按钮之类的总是自动居中显示,我希望能由顶部开始显示
定义了一个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顶部开始显示。请问该怎么办呢?  


(我之前发帖问了这个问题,但是很多人没看明白,希望大家看明白我的意思,谢谢大家帮助。分数我可以再追加)

------解决方案--------------------
panel.setLayout(new java.awt.GridLayout(int 行, int 列));
给你说的那个panel添加网格布局...那么其中的组件就是从最开头添加起,先行后列
------解决方案--------------------
请尝试使用GridBagLayout。
需要使用GridBagConstraints c = new GridBagConstraints()
例如你添加第一个,可设置c.gridX = 0, c.gridY = 0, 
c.anchor = GridBagConstraints.WEST ;第二个,c.gridY = 1

其他的属性如gridWidth, gridHeight我没有设,如有需要请自行设置。
记得每次setConstraints(你的组件, c)。
------解决方案--------------------
楼主该好好研究下布局管理器啊。
用BoxLayout,看例子:
Java code
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 );    }}