【问题标题】:Using Layouts in Java在 Java 中使用布局
【发布时间】:2013-02-06 05:44:28
【问题描述】:

我有一个JFrame 布局BorderLayout,我使用BorderLayout.CENTER 添加JPanels 我有一个 JPanel(使用 CENTER 添加),它使用 GridLayout 放置 4 个按钮。

这些按钮非常大,占据了整个屏幕。或者,我按照以下方式进行:

  • 我有一个布局为 null 的 JFrame,我设置了 JPanel 边界并添加了它们。
  • 我有一个 JPanel: 它设置了自己的边界,因此它占据了屏幕中心的 1/2,并且只有屏幕的 1/8 高。
  • 它使用网格布局添加按钮,并产生一排漂亮的按钮。

显然第二个选项看起来更好,但我希望符合规范,并始终使用布局...如何混合自定义和布局?(或者完全解决我的问题)

【问题讨论】:

    标签: java swing layout awt layout-manager


    【解决方案1】:

    当您向BorderLayout.CENTER 添加一个组件时,它会扩展以填充容器中未被BorderLayout 的其他部分使用的剩余空间。此外,您一次只能向BorderLayout.CENTER 添加一个组件。后续添加将替换之前的组件。

    至于解决你的确切问题,我建议你先看看A Visual Guide to Layout Managers。这将使您了解 Swing API 中可用的布局。 Oracle 还为每个布局提供了更深入的教程。通过嵌套布局,您可以在利用其强大功能的同时为您的 UI 提供您希望的任何外观,尤其是在调整窗口大小或以其他方式更改时的自动计算。

    【讨论】:

    • 好的,谢谢,我一定会调查的。但是出于好奇,像我这样做真的有什么问题吗?它已经使用了相对部分,如果我在调整窗口大小时更新它,那么它似乎可以完美地工作......所以如果我只是为了符合要求,那么使用 setLayout(null) 有什么“不好”的地方吗?除了用户方便?
    • "..它似乎完美无缺..." 代码在哪里?
    • @csga5000 并非每个系统都相同。系统具有不同的字体和字体度量以及分辨率差异。允许布局管理器管理这些差异要容易得多,然后必须为您可能遇到的每个可能的边缘情况编写代码......
    • 好点。因为用户容易使用布局?是的,但也因为在这些方面的实用性。我可能最终会弄乱 GridBagLayout,它似乎有很多我想做的事情的潜力。
    • “GridBagLayout,它似乎有很多我想做的事情的潜力。” 还可以考虑彼此之间的nesting layouts。这通常比试图让一种布局适应所有目的要简单得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2017-11-02
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多