【问题标题】:CardLayout didn't display JPanelCardLayout 没有显示 JPanel
【发布时间】:2013-04-13 18:48:27
【问题描述】:

我正在为数据库制作表单,我想使用 CardLayout。 我解释一下情况:用户有两个选择:要么连接到他的帐户,要么他是新用户并且需要创建一个帐户。 我有一个带有表单的第一个面板和另一个用于测试的面板(我将背景设置为黑色,以便在用户单击“新建”按钮时查看更改)。当我启动主程序时,我只有带有标题的窗口,没有别的。或者这不是我想要的,我的应用程序的第一步是显示表单。因此,如果有人能解释我的错误在哪里,我会接受它:)

public class Accueil extends JFrame implements ActionListener {

    private CardLayout l = new CardLayout();
    private JPanel main = new JPanel(l);
    private JPanel change = new JPanel();
    private JPanel home = new JPanel(new BorderLayout());
    private JPanel title = new JPanel();
    private JPanel login = new JPanel(new BorderLayout());
    private JPanel login_title = new JPanel();
    private JPanel login_info = new JPanel();
    private JPanel copyright = new JPanel();
    private JLabel welcome = new JLabel("TEST");
    private JLabel connexion = new JLabel("Connexion");
    private JLabel mail = new JLabel("Mail : "); 
    private JTextField input_mail = new JTextField();
    private JLabel mdp = new JLabel("Password : ");
    private JTextField input_mdp = new JTextField();
    private JLabel who = new JLabel ("Are you a  : ");
    private JRadioButton client = new JRadioButton("Client", true);
    private JRadioButton developpeur = new JRadioButton("Developer", false);
    private ButtonGroup bg = new ButtonGroup();
    private JButton ok = new JButton("Login");
    private JButton annule = new JButton("Cancel");
    private JButton inscription = new JButton("New ?");
    private JLabel align = new JLabel("");

    public Accueil() {

        init_title();
        init_login();
        add_button();
        organize_frame();
        inscription.addActionListener(this);
        main.add(home, "Home");
        main.add(change, "Change");
        l.show(main, "Home");
        change.setBackground(Color.black);
        this.setTitle("test");
        this.setSize(600,600);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent arg0) {
        l.show(main, "Change");
    }

    private void organize_frame() { 
        home.add(title, BorderLayout.NORTH);
        home.add(login, BorderLayout.CENTER);
        home.add(copyright, BorderLayout.SOUTH);
    }

    private void init_title() { 
        welcome.setFont(build_font(35));
        welcome.setBorder(new EmptyBorder(20,0,0,0));
        title.setPreferredSize(new Dimension(600,80));
        title.add(welcome);
    }

    private void init_login() {
        setConnexion();
        user_input();
        align.setPreferredSize(new Dimension(215,50));
        organize_button();
        login.add(login_title, BorderLayout.NORTH);
        login.add(login_info, BorderLayout.CENTER);
    }

    private void setConnexion() {
        connexion.setFont(build_font(30));
        connexion.setBorder(new EmptyBorder(20,0,0,0));
        login_title.add(connexion);
        login_title.setPreferredSize(new Dimension(600,100));
    }

    private void user_input() {
        who.setFont(build_font(25));
        mail.setFont(build_font(25));
        mail.setBorder(new EmptyBorder(0,120,0,0));
        mdp.setFont(build_font(25));
        input_mdp.setFont(build_font(25));
        input_mail.setFont(build_font(25));
        input_mail.setPreferredSize(new Dimension(300,40));
        input_mdp.setPreferredSize(new Dimension(300,40));
        who.setFont(build_font(20));
        client.setFont(build_font(20));
        developpeur.setFont(build_font(21));
        login_info.add(who);
        login_info.add(client);
        login_info.add(developpeur);
        login_info.add(mail);
        login_info.add(input_mail);
        login_info.add(mdp);
        login_info.add(input_mdp);
        login_info.add(align);
    }

【问题讨论】:

    标签: java swing awt layout-manager cardlayout


    【解决方案1】:

    你在哪里添加使用 JPanel 的 CardLayout,main,什么?

    回答:你没有。要让它工作,必须将它添加到最终通向顶层窗口的组件中。必须显示它才能显示其“卡片”。

    【讨论】:

    • @user1086267:不客气。当遇到这样的问题时,尽量将代码简化到最低限度,以试图找到问题的本质。这样,您可能会一眼看到问题及其解决方案,或者如果没有,将能够发布简单的小代码,这些代码可以编译和运行,我们可以用来帮助您解决问题。
    猜你喜欢
    • 2016-08-15
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多