定义了一个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顶部开始显示。请问该怎么办呢?
(我之前发帖问了这个问题,但是很多人没看明白,希望大家看明白我的意思,谢谢大家帮助。分数我可以再追加)
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添加网格布局...那么其中的组件就是从最开头添加起,先行后列
否则今天的问题别人帮忙解决了,明天又会遇到其它问题。
流式new FlowLayout(FlowLayout.LEFT)左对齐
需要使用GridBagConstraints c = new GridBagConstraints()
例如你添加第一个,可设置c.gridX = 0, c.gridY = 0,
c.anchor = GridBagConstraints.WEST ;第二个,c.gridY = 1其他的属性如gridWidth, gridHeight我没有设,如有需要请自行设置。
记得每次setConstraints(你的组件, c)。
用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 );
}}