1

我已经JDialog为我的应用程序创建了简单的获取初始数据。元素 ( JLabel,JTextField和)在 . 内部JButton排列。(代码在最后)。到目前为止,它看起来像这样:BoxLayoutBorderLayout

目前的安排

我有两个问题:

  1. 我想JButton在它的行中居中。我试过startBtn.setAlignmentX(Component.CENTER_ALIGNMENT);了,但它不能正常工作,出现混乱。

  2. 我想添加一些左/右填充到TextField. 本主题的第一个解决方案工作正常,但其他元素向右左填充值移动。

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

    }

}
4

1 回答 1

3

BoxLayout 对齐方式不是你想的那样。

为了得到你想要的,这是你需要的线

msg.setAlignmentX(Component.CENTER_ALIGNMENT);
于 2013-01-06T17:40:06.980 回答