首页  >  文章  >  Java  >  尽管添加了多个组件,为什么我的 JFrame 中只显示一个组件?

尽管添加了多个组件,为什么我的 JFrame 中只显示一个组件?

Barbara Streisand
Barbara Streisand原创
2024-11-07 03:35:03589浏览

Why is only one component showing up in my JFrame despite adding multiple components?

JFrame 中仅显示一个组件

此问题源于用户遇到的问题,其中只有 GUI 的顶部组件程序运行时可见。用户的代码尝试在框架中显示多个面板和文本字段,但最初只有一个组件可见。这种差异导致他们怀疑其他元素被遮挡。

解决方案

检查代码后,很明显问题出在 BorderLayout JFrame 的内容窗格。 BorderLayout 只允许一个组件占据中心位置,这是所有组件最初放置的位置。

要解决此问题,用户应在将每个组件添加到 BorderLayout 时为其指定特定的约束。以下代码片段演示了这种方法:

f.add(top, BorderLayout.PAGE_START);
f.add(mid);
f.add(bot, BorderLayout.PAGE_END);

此代码将顶部面板放置在框架的开头,使中间和底部面板不受约束。因此,它们将垂直显示在顶部面板下方。

其他改进

除了解决可见性问题外,用户还表示希望增强程序的性能。这里有一些额外的建议:

  • 删除 f.setSize(500, 500);并在 setVisible(true) 之前调用 pack() 以根据其内容优化框架的大小。
  • Change f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);到 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);以获得更优雅的退出策略。
  • 省略对各个组件的 setVisible(true) 调用,因为它们在添加到顶级容器后默认可见。
  • 删除不必要的 public 语句class EncDecExample 扩展了 JFrame 并将其替换为公共类 EncDecExample。

通过实现这些更改,程序不仅会按预期显示所有组件,而且会在用户按下关闭时更高效地运行并无缝关闭按钮。

以上是尽管添加了多个组件,为什么我的 JFrame 中只显示一个组件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn