我想布局6个组件,在一列中垂直对齐。另外,我希望在列中的第一个组件之前有200像素的空白区域。我有以下代码:
public class MongoMusicApplet extends JApplet{
//*****main menu objects********
private JPanel mainMenuPanel;
private JButton buildingButton;
private JTextField text;
public void init(){
setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
mainMenuPanel=new JPanel();
buildingButton=new JButton("Graph-Building Mode");
text=new JTextField(20);
JLabel label1=new JLabel("Help us improve by entering");
JLabel label2=new JLabel("OR");
JLabel label3=new JLabel("Enter the name of an artist");
JLabel label4=new JLabel("to enter Discovery Mode");
mainMenuPanel.add(Box.createRigidArea(new Dimension(0,200)));
label1.setAlignmentX(Component.CENTER_ALIGNMENT);
mainMenuPanel.add(label1);
buildingButton.setAlignmentX(Component.CENTER_ALIGNMENT);
mainMenuPanel.add(buildingButton);
...add all other components in this order: label 2, label3, text, label4...
add(mainMenuPanel);
}
}
我得到以下布局:
首先,似乎createRigidArea在列开始之前创建空间,并且也在列中的某些组件之间创建空间。有没有办法让它只在列中的第一个组件之前创建空间?
第二,由于我选择对齐为Y_AXIS,为什么组件没有垂直排列,每行一个组件?我也尝试使用GridLayout(0,1),但这给了我完全相同的布局。如何将这些组件强制插入一个垂直列?
答案 0 :(得分:0)
经过一些修修补补,我发现我需要改变这一行:
setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
到此:
mainMenuPanel.setLayout(new BoxLayout(mainMenuPanel,BoxLayout.Y_AXIS))
因为我将组件添加到mainMenuPanel,而不是直接添加到applet的内容窗格。
这是一个愚蠢的错误,但我只是添加这个以防万一有人偶然发现这个