在BoxLayout中居中JButton,JTextField填充

时间:2013-01-06 16:08:45

标签: java swing jbutton jtextfield boxlayout

我创建了简单的JDialog来获取应用程序的初始数据。元素(JLabelJTextFieldJButton)由BoxLayout内的BorderLayout排列。 (最后的代码)。到目前为止它看起来像这样:

Current arrangement

我有两个问题:

  1. 我想将JButton放在其中。我尝试了startBtn.setAlignmentX(Component.CENTER_ALIGNMENT);,但它无法正常工作,出现混乱。

  2. 我想在TextField添加一些左/右填充。来自this topic的第一个解决方案工作正常,但其他元素左移填充值。

  3. 任何人都可以提示如何放置它吗?我是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());
    
        }
    
    }
    

1 个答案:

答案 0 :(得分:3)

BoxLayout对齐不是你想象的那样。

要获得你想要的东西,这就是你需要的那条

msg.setAlignmentX(Component.CENTER_ALIGNMENT);