如何将JLabel对齐到面板左侧

时间:2014-04-12 21:27:03

标签: java

我想将所有JLabel对齐到面板的左侧。以下是我的代码,但它无法正常工作,我不知道为什么。            JFrame frame1 =新JFrame("注册乘客");             frame1.setVisible(真);             frame1.setSize(550,200);

        JPanel panel = new JPanel();
        frame1.add(panel);

        JLabel label1 = new JLabel("Name",SwingConstants.LEFT);      
        JLabel label2 = new JLabel("Activities",SwingConstants.LEFT);

        JButton jbtReg = new JButton("Register");
        panel.add(label1);
        panel.add(text1);
        panel.add(label2);
        panel.add(text2);
        panel.add(jbtReg);

1 个答案:

答案 0 :(得分:1)

根据您的示例,您可以使用

JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));

但这会将所有组件对齐到左侧。

您还可以考虑使用其他布局管理器或布局管理器组合吗?

请查看A Visual Guide to Layout Managers了解更多提示

<强>更新

FlowLayout(这是JPanel的默认布局管理器)并没有提供很多选项,而是考虑尝试使用不同的布局管理器或布局管理器的组合。 ..

Layout

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class LayoutExample {

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

    public LayoutExample() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.anchor = GridBagConstraints.WEST;
            gbc.fill = GridBagConstraints.HORIZONTAL;

            gbc.gridx = 0;
            gbc.gridy = 0;

            add(new JLabel("Name:"), gbc);
            gbc.gridy++;
            add(new JLabel("Activity:"), gbc);

            gbc.gridx++;
            gbc.gridy = 0;
            gbc.fill = GridBagConstraints.NONE;

            add(new JTextField(10), gbc);
            gbc.gridy++;
            add(new JTextField(20), gbc);

            gbc.gridx = 0;
            gbc.gridy++;
            gbc.anchor = GridBagConstraints.CENTER;
            gbc.gridwidth = 2;

            add(new JButton("Register"), gbc);

        }

    }

}