-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