gpt4 book ai didi

java - (Java GUI) JPanel 未显示在removeAll() 方法之后通过方法返回

转载 作者:行者123 更新时间:2023-12-02 03:38:54 25 4
gpt4 key购买 nike

下面,我正在创建一个 JFrame 类(仅重要部分发布在类的下面)。创建 UserInterface 对象时,一切正常,激活事件监听器时除外。这一段代码:

getContentPane().removeAll();
getContentPane().add(gameScreen());
getContentPane().validate();
getContentPane().repaint();

似乎没有按预期工作。 removeAll() 方法起作用,但将 gameScreen 方法(返回面板)添加到 JFrame 不会执行任何操作。知道为什么吗?

public class UserInterface extends JFrame{

public UserInterface(){
super("idk");
setName("idk");
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.WHITE);
setResizable(false);
setLocationRelativeTo(null);
add(startScreen());
setVisible(true);
}//UserInterface

private class beginButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
getContentPane().removeAll();
getContentPane().add(gameScreen());
getContentPane().validate();
getContentPane().repaint();
}
}//beginButtonListener

public JPanel gameScreen(){

JPanel gamePanel = new JPanel();
gamePanel.setName("gamePanel");
gamePanel.setLayout(null);

JLabel fadeShade = new JLabel();
fadeShade.setName("fadeShade");
fadeShade.setBackground(Color.BLUE);
fadeShade.setBounds(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
gamePanel.add(fadeShade);
return gamePanel;
}//gameScreen
}//UserInterface

最佳答案

是的,您的游戏面板可能会被添加,但您永远不会看到它。您可以向其中添加 JLabel,标签上不包含任何文本,并且可以设置标签的背景颜色而不使标签不透明。您还使用空布局,这是一件非常危险的事情。

如果这是我的代码,我会

  • 使用 CardLayout 交换组件
  • 避免像瘟疫一样使用 null 布局,而是让布局管理器为我完成繁重的布局工作。
  • 确保设置任何需要显示文本的 JLabel 的文本。设置 JLabel 的 name 属性可能对我没有多大帮助。

关于java - (Java GUI) JPanel 未显示在removeAll() 方法之后通过方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37084070/

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