2012-02-21 2 views
4

Я действительно новичок в программировании GUI на Java, я провел много исследований, и я не смог найти ответ на эту проблему.Как я могу складывать/накладывать jPanels в Java?

У меня есть простой JFrame с меню, и внутри этого JFrame У меня есть JPanel с бревном в форме (были пользователи ввода имени пользователя и пароля), а затем я хочу, чтобы изменить это JPanel к другому JPanel в зависимости от того, что пользователи хотят делать.

Что было бы лучшим способом сделать это? Я думаю, что укладка JPanels в порядке. Но после добавления новых JLayeredPanels в Netbeans они не складываются. Я где-то читал, что должен использовать Z-упорядочение или что-то в этом роде, но я не могу найти его на дизайнере.

Хорошо, большое вам спасибо за ваше терпение!

+11

Посмотрите в помощью [CardLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html), чтобы поменять "мнения". –

ответ

7

CardLayout класс имеет полезный API, который может служить вашим требованиям. Использование методов, таких как next(), first(), last(), может оказаться полезным. Я подготовил простую демонстрацию смены панелей в родительской панели и/или фрейме. Посмотрите на него:

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

public class PanelChanger implements ActionListener 
{ 
    JPanel panels; 

    public void init(Container pane) 
    { 
     JButton switcher = new JButton("Switch Active Panel!"); 
     switcher.addActionListener(this); 

     JPanel login = new JPanel(); 
     login.setBackground(Color.CYAN); 
     login.add(new JLabel("Welcome to login panel.")); 

     JPanel another = new JPanel(); 
     another.setBackground(Color.GREEN); 
     another.add(new JLabel("Yeah, this is another panel.")); 

     panels = new JPanel(new CardLayout()); 
     panels.add(login); 
     panels.add(another); 

     pane.add(switcher, BorderLayout.PAGE_START); 
     pane.add(panels, BorderLayout.CENTER); 
    } 

    public void actionPerformed(ActionEvent evt) 
    { 
     CardLayout layout = (CardLayout)(panels.getLayout()); 
     layout.next(panels); 
    } 

    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame("CardLayoutDemo"); 
     PanelChanger changer = new PanelChanger(); 
     changer.init(frame.getContentPane()); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
Смежные вопросы