为什么我的代码不适用于 CardLayout?不管我做什么,它只显示一个空白的 JFrame
Why doesn't my code work for CardLayout? Not matter what I do, it just shows a blank JFrame
无论我做什么,我都无法让 JFrame 显示任何内容。它只是空白。我将按钮启动器和教程添加到 JPanel 游戏中,并将 JPanel 添加到我设置为 cardLayout 的 JPanel 卡片中。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class layouter extends JFrame {
public static void main (String[]args){
layouter x = new layouter();
}
public layouter(){
setSize(600,600);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Pan p = new Pan();
setContentPane(p);
setVisible(true);
}
}
class Pan extends JPanel{
JButton starter;
JButton tutorialer;
JPanel start;
JPanel tutorial;
JPanel game;
JPanel cards;
CardLayout cl;
Pan(){
starter = new JButton("start");
tutorialer = new JButton("tutorial");
start = new JPanel();
tutorial = new JPanel();
game = new JPanel();
cards = new JPanel( new CardLayout());
cl= (CardLayout)(cards.getLayout());
game.setLayout(null);
starter.setBounds(150,150,100,50);
tutorialer.setBounds(150,200,100,50);
game.add(starter);
game.add(tutorialer);
cards.add(game,"game");
add(cards);
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
cl.show(cards,"game");
System.out.println("hello");
}
}
game.setLayout(null);
<-- 这会给您带来问题,因为您添加到此容器中的任何内容将不再自动布局。默认情况下,组件的大小和位置为 0x0
使用适当的布局管理器。有关详细信息,请参阅 Laying Out Components Within a Container。
如果您向 games
添加更多容器,您可能需要 "show" 首先显示您希望显示的默认视图
cl.show(cards, "game");
无论我做什么,我都无法让 JFrame 显示任何内容。它只是空白。我将按钮启动器和教程添加到 JPanel 游戏中,并将 JPanel 添加到我设置为 cardLayout 的 JPanel 卡片中。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class layouter extends JFrame {
public static void main (String[]args){
layouter x = new layouter();
}
public layouter(){
setSize(600,600);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Pan p = new Pan();
setContentPane(p);
setVisible(true);
}
}
class Pan extends JPanel{
JButton starter;
JButton tutorialer;
JPanel start;
JPanel tutorial;
JPanel game;
JPanel cards;
CardLayout cl;
Pan(){
starter = new JButton("start");
tutorialer = new JButton("tutorial");
start = new JPanel();
tutorial = new JPanel();
game = new JPanel();
cards = new JPanel( new CardLayout());
cl= (CardLayout)(cards.getLayout());
game.setLayout(null);
starter.setBounds(150,150,100,50);
tutorialer.setBounds(150,200,100,50);
game.add(starter);
game.add(tutorialer);
cards.add(game,"game");
add(cards);
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
cl.show(cards,"game");
System.out.println("hello");
}
}
game.setLayout(null);
<-- 这会给您带来问题,因为您添加到此容器中的任何内容将不再自动布局。默认情况下,组件的大小和位置为 0x0
使用适当的布局管理器。有关详细信息,请参阅 Laying Out Components Within a Container。
如果您向 games
添加更多容器,您可能需要 "show" 首先显示您希望显示的默认视图
cl.show(cards, "game");