【问题标题】:CardLayout alignment is not properCardLayout 对齐不正确
【发布时间】:2014-01-04 19:22:42
【问题描述】:

我是java初学者。在第二个卡片面板中,用户名和密码对齐不正确。有什么办法可以解决吗?我也想知道使用多帧有什么缺点。

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;

    public class CardLayoutTest extends JFrame {

        private static final long serialVersionUID = 1L;
        private JPanel cardPanel, jp1, jp2, buttonPanel;
        private JLabel jl1, jl2;
        private JTextField jt1;
        private JPasswordField jt2;
        private JButton btn1, btn2;
        private CardLayout cardLayout = new CardLayout();

        public CardLayoutTest() {
            setTitle("Login");
            setSize(400, 300);
            cardPanel = new JPanel();
            buttonPanel = new JPanel();
            cardPanel.setLayout(cardLayout);
            jp1 = new JPanel();
            jp2 = new JPanel();
            jt1=new JTextField();
            jt2=new JPasswordField();
            jl1 = new JLabel("Username");
            jl2 = new JLabel("Password");
            //jp1.add(jl1);
            jp2.add(jl1);
            jp2.add(jt2);
            jp2.add(jl2);
            jp2.add(jt2);
            cardPanel.add(jp1, "1");
            cardPanel.add(jp2, "2");
            btn2 = new JButton("Show Card 2");
            btn2.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    cardLayout.show(cardPanel, "2");
                }
            });
            buttonPanel.add(btn2);
            add(cardPanel, BorderLayout.CENTER);
            add(buttonPanel, BorderLayout.SOUTH);
        }

        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {

                @Override
                public void run() {
                    CardLayoutTest frame = new CardLayoutTest();
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setVisible(true);
                }
            });
        }
    }

【问题讨论】:

    标签: java swing layout jpanel cardlayout


    【解决方案1】:

    在第二个卡片面板中,用户名和密码对齐不正确。

    默认情况下,JPanel 使用 FlowLayout,因此组件显示在一行上。

    有什么办法可以解决吗?

    使用适当的布局管理器(或布局管理器的组合)来获得所需的对齐方式。

    阅读 Layout Managers 上的 Swing 教程部分,了解更多信息和示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-13
      • 2013-03-08
      • 2013-12-09
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多