-1
我想布局6个组件,垂直对齐在一列中。另外,我想在列中的第一个组件之前有一个200像素的空白区域。我有以下代码:问题格式BoxLayout
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),但是这给了我完全相同的布局。我如何强制这些组件进入一个垂直列?
1)为什么代码的小程序?如果是由于老师指定它,请将它们转介给[为什么CS教师应该**停止**教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop教学-java的小应用程序/)。 2)源代码中的单个空白行是所有需要的。 '{'之后或'}'之前的空行通常也是多余的。 3)为了更快地获得更好的帮助,请发布[MCVE](http://stackoverflow.com/help/mcve)(最小完整可验证示例)或[SSCCE](http://www.sscce.org/)(简称,自包含,正确的例子)。 – 2015-03-31 04:59:28
在第一个组件之前为空白边距200px使用一个EmptyBorder。另请参阅[我是否应避免使用Java Swing中的set(Preferred | Maximum | Minimum)大小方法?](http://stackoverflow.com/q/7229226/418556)(是) – 2015-03-31 05:00:31
@AndrewThompson,即使任何setSize方法删除,我仍然没有得到组件垂直堆叠 – user50210 2015-03-31 16:45:18