java - 面板未添加到 GUI

标签 java swing user-interface

我最近开始学习 Java,并正在为个人使用的角色创建表编写 gui。我相信我已经让所有后端内容正常工作,但我无法在控制台之外测试它,因为我无法让 GUI 显示除灰框之外的任何内容。

我有一个主类,它创建 JFrame 并调用其他角色类的构造函数来完成所有工作,但由于某种原因,GUI 中没有显示任何内容。我没有收到任何错误或任何东西,我花了几个小时研究可能的解决方案但无济于事。

我的代码: 主要方法:

public static void main(String[] args) throws IOException
{
    JFrame main = new JFrame();
    JMenuBar menu = new MenuBar();
    JPanel character = new CreatorGUI();


    main.getContentPane().add(character);
    main.add(menu);
    main.setJMenuBar(menu);
    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    main.setSize(10000, 10000);
    main.pack();
    main.setVisible(true);
}

CreatorGUI:

public CreatorGUI() throws IOException
{
    JPanel container = new JPanel();
    JPanel stats = makeStats();
    JPanel mods = makeMods();
    JPanel character = makeChar();

    container.add(mods);
    container.add(stats);   
    container.add(character);
    add(container);
}

我试图让 GUI 以最基本的形式工作,以确保在我返回并完善 GUI 之前一切正常,但我遇到了困难。

非常感谢任何帮助!

最佳答案

main.getContentPane().add(character);
main.add(menu); 
main.setJMenuBar(menu);

使用main.getContentPane().add(...)main.add(...)相同。也就是说,该组件被添加到内容 Pane 中。

JFrame 的默认布局管理器是 BorderLayout。

当您不指定约束时,组件将添加到CENTER。但是,只能将单个组件添加到CENTER,因此“菜单”正在取代“字符”面板。

去掉main.add(menu)语句。它应该只添加到菜单栏,因此您只需要使用 setJMenuBar(...) 方法。

关于java - 面板未添加到 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283014/

相关文章:

java - 在 Tomcat 7 中运行 Java EE 7 WebSocket

c++ - Fl_Window 子类不起作用

java - 如何在 Jbutton 的边缘周围添加一个间隙?

java - java ADT中生成0到7的随机数,每个数字出现2次

java - 使用 JavaMail 附加文件

java - JSplitPane 小边框但大抓取命中框

java - 有没有办法在调用 setSelectedItem() 时阻止 Action 监听器触发?

java - 如何将我单击的 JButton 的组件传输到我单击的第二个 JButton?

android - 如何在 Android 的 UI 屏幕上显示耗时

java - 不支持的记录版本 SSLv2Hello 使用 CloseableHttpClient