我正在尝试编写一个基础程序来更好地学习Java,但是我在切换屏幕时遇到了问题。我想要有一个显示类,可以在其他类中调用以处理所有的面板等内容,并制作一个建立每个面板的类。目前我正在尝试使用startmenu类中的按钮,使用display类中的方法从一个面板切换到另一个面板。
下面是在startmenu类中的代码:
public void actionPerformed(ActionEvent e)
{
display.switchPanel("Start");
}
这是我的显示类:
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("插入名称"); 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("开始")) { mainPanel.setVisible(true); startPanel.setVisible(false); }
} }
BorderLayout
,因为它只能管理 5 个可用位置中的一个组件。相反地,你应该使用CardLayout
,因为这是它的设计初衷。请参阅 如何使用 CardLayout 获取更多详细信息。 - MadProgrammer