gpt4 book ai didi

java - 切换 JPanel

转载 作者:行者123 更新时间:2023-11-30 08:44:43 24 4
gpt4 key购买 nike

所以我正在尝试制作一个基本程序来学习更多关于 java 的知识,但我在切换屏幕时遇到了麻烦。我想要一个显示类,我可以在其他类中调用它来处理所有面板等,然后创建一个类来构建每个面板。我现在想做的是使用我的开始菜单类中的按钮,使用显示类中的方法从一个面板更改为另一个面板。

这是 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("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);
}

在 View 之间切换

参见 How to Use CardLayout了解更多详情

关于java - 切换 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com