如何在Java中堆叠/叠加jPanel?
我真的是Java Java编程的新手,我做了很多研究,但找不到这个问题的答案。
我有一个简单的JFrame
用一个菜单,这里面JFrame
我有JPanel
一个日志的形式(分别为用户输入自己的用户名和密码),然后我想改变这种状况JPanel
到另一JPanel
这取决于用户想做的事情。
最好的方法是什么?我认为堆叠JPanels
是可以的。但是JLayeredPanels
在Netbeans中添加新内容后,它们不会堆叠。我读过某个地方应该使用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);
}
}
以上是 如何在Java中堆叠/叠加jPanel? 的全部内容, 来源链接: utcz.com/qa/423887.html