如何在Java中堆叠/覆盖jPanel?
我是Java的GUI编程的新手,我做了很多研究,但我找不到这个问题的答案。
我有一个带菜单的简单JFrame
,在这个JFrame
里面我有一个登录表单的JPanel
(用户输入他们的用户名和密码),然后我想根据用户想要的内容将JPanel
更改为另一个JPanel
。
这样做的最佳方式是什么? 我认为堆叠JPanels
是可以的。 但是在我在Netbeans中添加新的JLayeredPanels
,它们不会堆叠。 我在某处读到了我应该使用Z排序或类似的东西,但我在设计师视图中找不到它。
好的,非常感谢你的耐心等待!
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); } }