切换 JPanel
Switching JPanels
所以我正在尝试制作一个基本程序来了解有关 java 的更多信息,但我在切换屏幕时遇到了问题。我想要一个显示 class,我可以在其他 class 中调用它来处理所有面板等,然后制作一个 class 来构建每个面板。我现在想做的是使用开始菜单 class 中的按钮,使用显示 class 中的方法从一个面板切换到另一个面板。
这是 startmenu
class 中的代码:
public void actionPerformed(ActionEvent e)
{
display.switchPanel("Start");
}
这是我的展示 class:
public class Display
{
JFrame frame;
StartMenu start = new StartMenu();
MainMenu main = new MainMenu();
JPanel panel = new JPanel();
JPanel startPanel = start.createPanel();
JPanel mainPanel = main.createPanel();
CardLayout card = new CardLayout();
BorderLayout border = new BorderLayout();
public void createDisplay()
{
frame = new JFrame("Insert Name");
frame.setPreferredSize(new Dimension(800,600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(border);
panel.add(startPanel);
panel.add(mainPanel);
mainPanel.setVisible(false);
startPanel.setVisible(true);
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
}
public void switchPanel(String x)
{
String p = x;
if(p.equals("Start"))
{
mainPanel.setVisible(true);
startPanel.setVisible(false);
}
}
}
使用 CardLayout
,这是它的设计用途,例如...
public class Display {
public static final String START_VIEW = "start";
public static final String MAIN_VIEW = "main";
JFrame frame;
StartMenu start = new StartMenu();
MainMenu main = new MainMenu();
JPanel panel = new JPanel();
JPanel startPanel = start.createPanel();
JPanel mainPanel = main.createPanel();
CardLayout card = new CardLayout();
public void createDisplay() {
frame = new JFrame("Insert Name");
frame.setPreferredSize(new Dimension(800, 600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(card);
panel.add(startPanel, START_VIEW);
panel.add(mainPanel, MAIN_VIEW);
mainPanel.setVisible(false);
startPanel.setVisible(true);
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
}
public void switchPanel(String x) {
card.show(panel, x);
}
}
那么你可以使用类似...
public void actionPerformed(ActionEvent e)
{
display.switchPanel(Display.START_VIEW);
}
在视图之间切换
有关详细信息,请参阅 How to Use CardLayout
所以我正在尝试制作一个基本程序来了解有关 java 的更多信息,但我在切换屏幕时遇到了问题。我想要一个显示 class,我可以在其他 class 中调用它来处理所有面板等,然后制作一个 class 来构建每个面板。我现在想做的是使用开始菜单 class 中的按钮,使用显示 class 中的方法从一个面板切换到另一个面板。
这是 startmenu
class 中的代码:
public void actionPerformed(ActionEvent e)
{
display.switchPanel("Start");
}
这是我的展示 class:
public class Display { JFrame frame; StartMenu start = new StartMenu(); MainMenu main = new MainMenu(); JPanel panel = new JPanel(); JPanel startPanel = start.createPanel(); JPanel mainPanel = main.createPanel(); CardLayout card = new CardLayout(); BorderLayout border = new BorderLayout(); public void createDisplay() { frame = new JFrame("Insert Name"); frame.setPreferredSize(new Dimension(800,600)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(panel, BorderLayout.CENTER); panel.setLayout(border); panel.add(startPanel); panel.add(mainPanel); mainPanel.setVisible(false); startPanel.setVisible(true); frame.add(panel); frame.pack(); frame.setVisible(true); frame.setResizable(false); } public void switchPanel(String x) { String p = x; if(p.equals("Start")) { mainPanel.setVisible(true); startPanel.setVisible(false); } } }
使用 CardLayout
,这是它的设计用途,例如...
public class Display {
public static final String START_VIEW = "start";
public static final String MAIN_VIEW = "main";
JFrame frame;
StartMenu start = new StartMenu();
MainMenu main = new MainMenu();
JPanel panel = new JPanel();
JPanel startPanel = start.createPanel();
JPanel mainPanel = main.createPanel();
CardLayout card = new CardLayout();
public void createDisplay() {
frame = new JFrame("Insert Name");
frame.setPreferredSize(new Dimension(800, 600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(card);
panel.add(startPanel, START_VIEW);
panel.add(mainPanel, MAIN_VIEW);
mainPanel.setVisible(false);
startPanel.setVisible(true);
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
}
public void switchPanel(String x) {
card.show(panel, x);
}
}
那么你可以使用类似...
public void actionPerformed(ActionEvent e)
{
display.switchPanel(Display.START_VIEW);
}
在视图之间切换
有关详细信息,请参阅 How to Use CardLayout