2012-01-29 78 views
0

我正在使用Java中的JFrame製作拉丁語轉換器。這是我的問題;我有一個關閉程序的「退出」按鈕;這並不重要,但是我無法控制其對齊方式(或任何其他組件)。我試圖使用quit.setAlignmentY(BOTTOM_ALIGNMENT);,希望能夠將其與頁面底部對齊,但沒有任何變化。請幫忙嗎? 如果有人需要它,這裏是代碼;JFrame中的JButton對齊

public class Main extends JFrame{ 
     private static JLabel label, result; 
     private static JTextField english; 
     private static JButton quit; 
     private static String originalResult = "Translated to pig latin: "; 
     private static ArrayList<String> beginningSymbols = new ArrayList<>(); 
     private static ArrayList<String> endingSymbols = new ArrayList<>(); 
     //prompt for string to translate, display final result 
     public Main(){ 
      super("Pig Latin Translator"); 
      setLayout(new FlowLayout()); 
      setVisible(true); 
      setSize(600, 300); 
      setDefaultCloseOperation(EXIT_ON_CLOSE);  
      translatingHandler th = new translatingHandler(); 
      label = new JLabel("Enter a phrase to translate into pig latin, then press enter:"); 
      english = new JTextField(15); 
      result = new JLabel(originalResult); 
      quit = new JButton("Quit program"); 
      english.addActionListener(th); 
      quit.addActionListener(th); 
      quit.setAlignmentY(BOTTOM_ALIGNMENT); 
      add(label); 
      add(english); 
      add(quit); 
      add(result); 
      english.requestFocus(); 
     } 

     public static void main(String[] args){ 
      new Main(); 
     } 
... 
} 

JButton quit是我試圖對齊到頁面底部的那個。謝謝!

+2

解決方案:閱讀[使用佈局管理器的教程](http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html)並開始使用它們。 FlowLayout適用於一些簡單的事情,但您需要使用其他解決方案來解決此問題,可能會使用其自己的佈局管理器嵌套JPanel。例如,可以使用BorderLayout將JPanel放置在GUI的底部位置,並且可以將退出JButton放置在底部的JPanel中。 – 2012-01-29 19:58:56

回答

1

其實您正在使用FlowLayout。如果您在FlowLayout tutorials看看它被提及

的的FlowLayout類使組件在一排,在他們 首選大小尺寸。如果容器中的水平空間太小,將所有組件放在一行中,FlowLayout類將使用多行 。如果容器的寬度大於一行 組件所需的寬度,則默認情況下,該行在 容器內水平居中。

如果您堅持使用FlowLayout對齊您的組件。

無論如何看看Using Layout Managers。對於您的任務,適當的佈局管理器將爲BorderLayout

但是,如果您需要非常靈活的東西,請使用GridBagLayoutMigLayout,但它們使用起來有點複雜。

因此@HovercraftFullOfEels建議儘量避免它們。

+0

如果可以的話,最好避免使用GridBagLayout,並且只有在必要時才使用它。最好在嵌套的JPanel中使用更簡單的佈局管理器。 – 2012-01-29 20:09:50

+0

@HovercraftFullOfEels:除了它的複雜性之外,避免它的任何具體原因。 – RanRag 2012-01-29 20:11:29

+1

主要是由於它的複雜性,特別是對於使用佈局管理器的新手。大多數複雜的佈局都可以使用嵌套組件製作。 MigLayout也是比Gridbaglayout更好的網格創建器。 – 2012-01-29 20:13:55

1

歡迎來到令人困惑的Java Swing世界。您可能想要查看佈局管理器。具體而言,BorderLayout可能是感興趣的。