2013-01-06 36 views
1

我創建了簡單的JDialog以獲取我的應用程序的初始數據。元素(JLabel,JTextFieldJButton)在BorderLayout內由BoxLayout排列。 (代碼在最後)。到目前爲止,它看起來像這樣:在BoxLayout中居中JButton,JTextField填充

Current arrangement

我有兩個問題:

  1. 我想在它的行居中JButton。我試過startBtn.setAlignmentX(Component.CENTER_ALIGNMENT);,但它不能正常工作,出現混亂。

  2. 我想添加一些左/右填充到TextField。從this topic第一個解決方案工作正常,但其他元素左移填充值。

任何人都可以給出一個提示如何放置它?我是Java新手,不知道。

這裏是我的InitDialog類代碼:

public class InitDialog extends JDialog { 

    JTextField dataTF; 
    JButton startBtn; 

    public InitDialog(JFrame owner) { 

     super(owner, "Rozpocznij test", Dialog.ModalityType.DOCUMENT_MODAL); 
     initUI(); 

    } 

    public final void initUI() { 

     System.out.println("InitDialog::initUI"); 

     JPanel outer = new JPanel(new BorderLayout()); 
     JPanel inner = new JPanel(); 

     outer.setBorder(new EmptyBorder(new Insets(20, 20, 20, 20))); 

     JLabel msg = new JLabel("<html>Podaj ilości liczb w zestawach testowych<br />(przedzielone średnikiem):"); 
     inner.add(msg); 
     inner.add(Box.createVerticalStrut(15)); 

     dataTF = new JTextField(); 
     dataTF.setBorder(null); 
     dataTF.setText("50; 100; 200"); 
     inner.add(dataTF); 
     inner.add(Box.createVerticalStrut(15)); 

     startBtn = new JButton("Rozpocznij test"); 
     inner.add(startBtn); 

     inner.setLayout(new BoxLayout(inner, BoxLayout.Y_AXIS)); 
     outer.add(inner); 
     add(outer); 

     setSize(300, 180); 

     //setDefaultCloseOperation(DISPOSE_ON_CLOSE); 

     addWindowListener(new WindowAdapter() { 
      @Override public void windowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 

     setResizable(false); 
     setLocationRelativeTo(getRootPane()); 

    } 

} 
+0

對於你的第一個問題,你嘗試過'inner.add(startBtn,BorderLayout.CENTER);' – exexzian

+0

有佈局沒有什麼區別呢。感謝您的關注。 –

回答

3

BoxLayout的定位是不是你認爲它是。

爲了得到你想要的東西,這是行你需要

msg.setAlignmentX(Component.CENTER_ALIGNMENT); 
+1

使用代碼標籤+1 :-) – mKorbel