Come posso sovrapporre / sovrapporre jPanels in Java?

Sono davvero nuovo alla programmazione GUI in Java, ho fatto molte ricerche e non sono riuscito a trovare una risposta a questo problema.

Ho un semplice JFrame con un menu, e all’interno di questo JFrame ho un JPanel con un modulo di accesso (gli utenti hanno inserito il loro nome utente e password), e poi voglio cambiare JPanel in un altro JPanel seconda di cosa vogliono fare gli utenti .

Quale sarebbe il modo migliore per farlo? Penso che impilare JPanels sia OK. Ma dopo aver aggiunto nuovi JLayeredPanels in Netbeans non si impilano. Ho letto da qualche parte che dovrei usare l’ordine Z o qualcosa del genere, ma non riesco a trovarlo nella vista del designer.

Bene, grazie mille per la tua pazienza!

CardLayout class CardLayout ha un’API utile che può soddisfare le tue esigenze. Usare metodi come next(), first(), last() può essere utile. Ho preparato una semplice dimostrazione di modifica dei pannelli all’interno di un pannello principale e / o frame. Dai un’occhiata a questo:

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