Java 格式化BoxLayout时出现问题
我想布局6个组件,在一列中垂直对齐。此外,我希望在列中第一个组件之前有一个200像素的空格。我有以下代码:Java 格式化BoxLayout时出现问题,java,swing,layout-manager,grid-layout,boxlayout,Java,Swing,Layout Manager,Grid Layout,Boxlayout,我想布局6个组件,在一列中垂直对齐。此外,我希望在列中第一个组件之前有一个200像素的空格。我有以下代码: public class MongoMusicApplet extends JApplet{ //*****main menu objects******** private JPanel mainMenuPanel; private JButton buildingButton; private JTextField text; public void in
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_轴作为对齐方式,为什么组件没有垂直排列,每行一个组件?我还尝试使用GridLayout(0,1),但这给了我完全相同的布局。如何将这些组件强制放在一个垂直列中?经过一些修补后,我发现我需要更改这一行:
setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
为此:
mainMenuPanel.setLayout(new BoxLayout(mainMenuPanel,BoxLayout.Y_AXIS))
因为我将组件添加到mainMenuPanel,而不是直接添加小程序的内容窗格
这是一个愚蠢的错误,但我只是添加了这一点,以防以后有人偶然发现这一点1)为什么要编写小程序?如果是老师指定的,请参考。2) 在源代码中只需要一行空白就可以了。
{
之后或}
之前的空行通常也是多余的。3) 为了更快地获得更好的帮助,请发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。在第一个组件之前使用EmptyBorder
作为200px间隔。另请参见(Yes.)@AndrewThompson,即使删除了任何setSize方法,我仍然没有垂直堆叠组件“我仍然没有得到…”我仍然没有看到您的MCVE。。我问了你一个你忽略了的问题,我自己解决了。谢谢你的帮助