java - Swing 布局未正确显示
问题描述
我在 Swing 中制作 GUI,作为布局,我使用不同的类只是为了遵守 MVC 结构。
在我的 Main.class 中,我在 Swing 中进行了布局,以显示 MenuBar 和 Toolbar,它运行得非常好,但它以某种方式无法正确显示。我唯一注意到的是 JToolBar 中的“边框”,但我没有在其中放置任何按钮,这让我认为在将其正确输出到正确的面板/框架时存在问题。
JFrame frame = new JFrame("Title");
JPanel panel = new JPanel();
frame.setJMenuBar(new MenuBar());
JToolBar toolbar = new ToolBar();
GroupLayout panelLayout = new GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
GroupLayout layout = new GroupLayout(frame.getContentPane());
frame.getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(toolbar, GroupLayout.DEFAULT_SIZE, 900, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(panel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(toolbar, GroupLayout.PREFERRED_SIZE, 39, GroupLayout.PREFERRED_SIZE)
.addContainerGap(22, Short.MAX_VALUE))
);
frame.pack();
frame.setLocationRelativeTo (null); // Center on screen.
frame.setVisible(true);
}
}
解决方案
我使用不同的类只是为了遵守 MVC 结构。
出于这个原因,没有必要使用不同的类。这不是 MVC 的重点。
我唯一注意到的是 JToolBar 中的“边框”,但我没有在其中放置任何按钮
好吧,我们真的帮不上忙,因为我们不知道你的ToolBar
班级是做什么的。
我的建议是忘记使用 IDE 来生成你的 GUI 代码。生成的代码无法阅读,也无法维护。
如果您手动创建 GUI,您想要做的就是如此简单。
要显示工具栏,基本代码是:
frame.add(new ToolBar(), BorderLayout.PAGE_START);
与 IDE 生成的所有代码相比,这就是一行代码。
然后对于主面板,您将拥有:
JPanel panel = new JPanel();
panel.add( someComponent );
frame.add(panel, BorderLayout.CENTER);
阅读 Swing 教程中有关如何使用 BorderLayout的部分以获取完整示例。
推荐阅读
- maven - Maven 无法找到 AEM 原型
- python - 在使神经元网络适应使用乳腺癌数据库时,形状 (398,398) 和 (1,4) 未对齐错误
- r - 如何计算每个 id 的重复事件
- javascript - 如何使用钩子设置常量“状态”变量?
- r - 使用 dplyr::left_join 和多个条件合并两个数据框
- jquery - 如何使里面的工作可点击
- php - PHP魔术方法__toNumber()将对象转换为数字
- java - 如何更改被引用的java路径
- asynchronous - IDisposable 如何处理使用和退货?
- xpages - 具有最后一页和大量页面的 XPages 寻呼机