2013-04-20 2 views
0

Я делаю форму для базы данных, и я хочу использовать CardLayout. Я объясняю ситуацию: у пользователя есть два варианта: либо он подключается к своему аккаунту, либо он новый, и ему нужно создать учетную запись. У меня есть первая панель с формой и другая для теста (в которой я устанавливаю фон в цветном черном, чтобы видеть изменение, когда пользователь нажимает кнопку «Новый»). Когда я запускаю основную программу, у меня есть только окно с названием и ничего больше. Или это не то, что я хочу, первым шагом моего приложения является отображение формы. Так что если кто-нибудь может объяснить мне, где моя ошибка, я понимаю :)CardLayout не отображал JPanel

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); 
    } 

ответ

3

Где вы добавляете CardLayout-используя JPanel, главное, к чему?

Ответ: У вас нет. Чтобы он работал, он должен быть добавлен к компоненту, который в конечном итоге приводит к окну верхнего уровня. Он должен отображаться, чтобы он мог показывать свои «карты».

+0

Oh da ** **, глупая ошибка !! Спасибо за помощь – afk

+0

@ user1086267: добро пожаловать. Когда вы сталкиваетесь с такими проблемами, попробуйте упростить свой код до минимума, чтобы попытаться понять суть проблемы. Таким образом, вы, скорее всего, увидите проблему, и ее решение с первого взгляда, или если нет, сможет опубликовать простой небольшой код, который компилируется и запускается, и который мы можем использовать, чтобы помочь вам решить вашу проблему. –