我最近开始学习 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/