面板未添加到GUI

时间:2016-05-17 17:42:08

标签: 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之前一切正常,但我已经碰壁了。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

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

使用main.getContentPane().add(...)main.add(...)相同。即组件被添加到内容窗格中。

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

如果未指定约束,则会将组件添加到CENTER。但是,只有一个组件可以添加到CENTER,因此“菜单”正在替换“字符”面板。

摆脱main.add(menu)声明。它应该只添加到菜单栏中,因此您只需要使用setJMenuBar(...)方法。

答案 1 :(得分:0)

最可疑的方法是调用setSize,它取像素的高度和宽度。 10000可能是宽度和高度太大,因此您可能只看到您要显示的部分内容。将其更改为800 x 800可能会让您看到新的东西。