CardLayout 中超过 2 个可见的 JPanel
More than 2 Visible JPanels in a CardLayout
我在 CardLayout
中放置两个以上的 JPanel
对象时遇到问题,这些对象同时可见 。虽然我可以放置多个面板,但它们不会同时出现并且我无法根据需要调整它们的大小。为了更清楚地了解我想要什么,我添加了一张测试图像。
在这种情况下,您可以将面板与 BorderLayout
as container for constants and cards, and then cards(JPanel
) with 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;
}
}
我在 CardLayout
中放置两个以上的 JPanel
对象时遇到问题,这些对象同时可见 。虽然我可以放置多个面板,但它们不会同时出现并且我无法根据需要调整它们的大小。为了更清楚地了解我想要什么,我添加了一张测试图像。
在这种情况下,您可以将面板与 BorderLayout
as container for constants and cards, and then cards(JPanel
) with 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;
}
}