gpt4 book ai didi

java - 如何使jframe中的jpanel可见

转载 作者:行者123 更新时间:2023-12-01 17:53:30 25 4
gpt4 key购买 nike

我尝试用 Java 为一个小游戏编写一个菜单。我认为最好有一个 Window 类(扩展 JFrame),然后在其中为不同的屏幕(菜单、游戏、GameOver 等)放置一个 JPanel如果我将按钮和东西直接放入 JFrame 中,一切都会显示正确,但是当我尝试将 JPanel 放入 JFrame 中时,它不起作用。这是代码:

   public class Window extends JFrame{



private final int WIDTH = 800;
private final int HEIGTH = 600;
private final int QUADRAT = 50;

JButton startButton;
JButton exitButton;
JButton anleitungButton;
JLabel gameTitle;

public Window() {
super("Study Run");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setSize(WIDTH, HEIGTH);
setResizable(false);
getContentPane().add(new MenuePanel());
setVisible(true);
setLocationRelativeTo(null);

}

这是我的面板:

public class MenuePanel extends JPanel{

JButton startButton;
JButton exitButton;
JButton anleitungButton;
JLabel gameTitle;


public MenuePanel() {
super();
setBackground(Color.CYAN);

gameTitle = new JLabel("StudyRun", SwingConstants.CENTER);
gameTitle.setBounds(200, 25, 400, 75);
gameTitle.setFont(new Font("Arial", Font.ITALIC, 36));
add(gameTitle);

startButton = new JButton("start");
startButton.setBounds(325, 125, 150, 50);
add(startButton);
anleitungButton = new JButton("anleitung");
anleitungButton.setBounds(325, 200, 150, 50);
add(anleitungButton);
exitButton = new JButton("exit");
exitButton.setBounds(325, 450, 150, 50);
add(exitButton);

CloseListener closeListener = new CloseListener();
StartListener startListener = new StartListener();
AnleitungListener anleitungListener = new AnleitungListener();
startButton.addActionListener(startListener);
anleitungButton.addActionListener(anleitungListener);
exitButton.addActionListener(closeListener);
}

我在网上找到的唯一帮助是,我需要在将框架设置为可见之前添加面板。那行不通。将 pack() 或 revalidate() 放在代码中的任何位置也不起作用。此外,将面板设置为不透明或可见也没有执行任何操作。我不知道还能尝试什么?!

最佳答案

您的问题在这里:

setLayout(null);

当您使用空布局时,编码人员对所有添加组件的位置和大小完全负责。您添加的组件没有大小,因此默认为 0, 0。

一个(糟糕的)解决方案:给 MenuePanel 一个大小或边界

更好的解决方案:学习并使用布局管理器(正如您所有的搜索肯定已经告诉您的那样)。

关于java - 如何使jframe中的jpanel可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47460521/

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