【发布时间】:2022-01-18 03:48:08
【问题描述】:
所以我有 3 个单独的类,主菜单类上的设置按钮应该切换到主菜单,但它只是隐藏了第一个面板,当我在另一个菜单上单击返回时也是如此,我想找到一个简单的解决方案不使用布局管理器,因为我不知道如何让卡片布局与 2 个类进行通信,但这就是解决方案,如果有人能给我一些关于如何实现它的指示,那就太好了:
public class Game extends JFrame {
MainMenu mainMenu;
Settings settings;
public Game(){
setSize(900,900);
setDefaultCloseOperation(3);
mainMenu = new MainMenu();
settings = new Settings();
mainMenu.setSettings(settings);
settings.setMainMenu(mainMenu);
add(settings,BorderLayout.CENTER);
add(mainMenu, BorderLayout.CENTER);
}
public static void main(String[] args) {
Game game = new Game();
game.setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainMenu extends JPanel {
Settings settings;
public void setSettings(Settings settings) {
this.settings = settings;
}
public MainMenu() {
setLayout(new GridLayout(1,3));
JButton Newgame = new JButton("New Game");
JButton Cont = new JButton("Continue");
JButton Sett = new JButton("Settings");
add(Newgame);
add(Cont);
SwitchMenu1 switchMenu1 = new SwitchMenu1();
Sett.addActionListener(switchMenu1);
add(Sett);
}
class SwitchMenu1 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(isVisible()){
settings.setVisible(true);
setVisible(false);
}
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Settings extends JPanel {
MainMenu mainMenu;
public void setMainMenu(MainMenu mainMenu) {
this.mainMenu = mainMenu;
}
public Settings(){
JButton Return = new JButton("Return");
SwitchMenu2 switchMenu2 = new SwitchMenu2();
Return.addActionListener(switchMenu2);
add(Return, BorderLayout.SOUTH);
}
class SwitchMenu2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(isVisible()){
mainMenu.setVisible(true);
setVisible(false);
}
}
}
}
我希望在单击按钮时显示另一个 JPanel,但它不起作用,第一个 JPanel 就消失了。我该如何解决这个问题?
非常感谢!
【问题讨论】:
-
简单的答案是使用
CardLayout -
另一个用户this question中的代码和这个有很多共同点是巧合吗?
-
我想知道为什么代码从问题中删除。和我之前的评论有关系吗?
-
“如果有人能给我一些关于如何实现它的指示,那就太好了:” 嗯,第一件事是创建一个
CardLayout来显示你朝着目标努力。 SO 不是代码生成服务或帮助台。
标签: java swing class actionlistener