我最近开始学习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之前一切正常,但我已经碰壁了。
非常感谢任何帮助!
答案 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可能会让您看到新的东西。