我在JPanel
中同时显示两个以上CardLayout
个对象时遇到问题。虽然我可以放置一些面板,但它们不会同时出现,我无法按照自己的意愿调整它们。为了更清楚地了解我想要的内容,我添加了一个测试图像。
答案 0 :(得分:5)
在这种情况下,您可以使用BorderLayout
面板作为常量和卡片的容器,然后使用CardLayout
的卡片(import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class TestFrame extends JFrame {
public static void main(String... s) {
new TestFrame();
}
public TestFrame() {
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void init() {
setLayout(new BorderLayout());
JLabel head = new JLabel("Header");
head.setBorder(BorderFactory.createLineBorder(Color.BLACK));
JLabel side = new JLabel("SideBar");
side.setBorder(BorderFactory.createLineBorder(Color.BLACK));
JPanel changable = getPanel();
changable.setBorder(BorderFactory.createLineBorder(Color.BLACK));
add(head,BorderLayout.NORTH);
add(side,BorderLayout.WEST);
add(changable,BorderLayout.CENTER);
}
private JPanel getPanel() {
final CardLayout cards = new CardLayout(5,5);
final JPanel p = new JPanel(cards);
p.add(new JLabel("1"), "1");
p.add(new JLabel("2"), "2");
p.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
cards.next(p);
}
});
return p;
}
}
)。这是一个简单的例子:
openParentApplication