添加到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 );
}
}