Java Swing(BoxLayout)对齐问题

时间:2014-04-16 04:30:16

标签: java swing user-interface boxlayout

我对Java Swing非常陌生,而且我在制作好的布局时遇到了很多问题。我已经检查了谷歌,甚至在这个网站上的其他答案,但我找不到任何信息似乎解决了这个问题。以下是我努力的结果:

enter image description here

如您所见,标签,文本字段和按钮都不对齐。我的目标是让所有人都拥有相同的左手边框,并且按钮和文本字段具有相同的右手边框,这些左右边框的左右边距各自相同我的窗户两侧。

以下是我的代码的重要部分:

    public void run()
    {
         JFrame frame = new JFrame("Arduino Server");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         InstancePanel = new ServerGUIPanel();
         frame.getContentPane().add(InstancePanel);
         frame.pack();
         frame.setVisible(true);
    }

并且,在ServerGUIPanel.java中:

    public ServerGUIPanel()
    {
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setPreferredSize(new Dimension(500, 500));
        setBorder(new EmptyBorder(10, 10, 10, 10));



        StatusLabel = new JLabel("STATUS: BOOTUP");
        add(StatusLabel);

        PortField = new JTextField();
        PortField.setPreferredSize(new Dimension(5000, 20));
        PortField.setMaximumSize(PortField.getPreferredSize());
        PortField.setActionCommand("PortChanged");
        add(PortField);

        ConnectionButton = new JButton();
        ConnectionButton.setPreferredSize(new Dimension(5000, 20));
        ConnectionButton.setMaximumSize(ConnectionButton.getPreferredSize());
        ConnectionButton.setActionCommand("ConnectionClicked");
        add(ConnectionButton);
    }

有没有人有这个简单的解决方案?我在这里做错了什么?

非常感谢!

- Georges Oates Larsen

2 个答案:

答案 0 :(得分:2)

阅读How to Use BoxLayout上Swing教程中的部分,了解使用BoxLayout的基础知识以及有关对齐问题的部分。

基本上,您需要确保将所有组件的alignmentX值设置为左对齐。

此外:

  1. 不要使用setPreferredSize()来设置组件的大小。每个Swing组件将确定自己的首选大小。
  2. 使用Java命名约定。变量名不应以大写字符开头。

答案 1 :(得分:0)

我不建议使用setPreferredSize()和setMaximumSize()。拉伸主框架后,后者会出现问题。 [您的组件可能不希望调整大小]

您应该使用布局管理器来处理所有对齐方式。在这种情况下,我会远离使用BoxLayout,因为不同的组件需要不同的大小,这会在添加到BoxLayout面板时影响对齐。

此外,您可能还希望为主框架提供布局。 你能发布你如何使用GridBagLayout吗?