【问题标题】:Resize JFrame and Components Based On Computer Resoultion根据计算机分辨率调整 JFrame 和组件的大小
【发布时间】:2013-08-23 04:54:29
【问题描述】:

我已经在 netbeans 中创建了一个 java 应用程序,我想知道如何使 jframe 的大小达到计算机分辨率宽度和高度的一半,并使组件符合这种变化。我尝试输入代码,它确实使框架高度为计算机分辨率的一半,但我的组件(例如按钮和文本字段)停止显示。我怎样才能做到这一点?谢谢。

【问题讨论】:

  • 使用合适的布局管理器。如果您提供合适的SSCCE,您也可能获得更多成功

标签: java swing layout resize dimension


【解决方案1】:

像往常一样,在这种情况下,关键是为您的容器使用正确的布局管理器组合。您可能正在使用 NetBeans 生成的代码(在您非常熟悉 Swing 编码之前,我建议您避免使用该代码),并且可能让您使用 GroupLayout,这是一种很好的布局,但它的行为可能不像以及您想要调整组件的大小。我建议您通过layout manager tutorial 并尝试嵌套 JPanel 容器并使用不同的布局(例如 GridLayout、GridBagLayout 和 BorderLayout)来尝试创建可以很好地调整大小的最佳布局。

【讨论】:

  • 如何更改项目的布局?我无法在代码中编辑它,因为它说 Netbeans 会处理它。
  • 我同意您应该对 Swing 基础知识有很好的了解,但我认为您不必成为专家才能使用出色的 Netbeans WYSIWYG 环境。
  • @GuidoAnselmi:我在哪里说过需要成为专家?
  • @Navio53:请通读布局管理器教程。不要编辑 NetBeans 不可编辑的代码部分,而是尝试手动编写代码。至于要使用什么特定的布局管理器,如果不向我们展示您要完成的工作,很难猜到。
  • @GuidoAnselmi:这家伙在黑暗中跌跌撞撞,因为除了从 NetBeans 拖放之外,他对如何创建 Swing GUI 一无所知,而且 NetBeans 将生成“不要更改”代码部分.在他能够很好地使用 NetBeans 之前,他肯定需要了解更多,所以我认为是时候让他走出自己的舒适区了。
【解决方案2】:

(已编辑)

将 JFrame 的布局管理器设置为 GridLayout。在 GridLayout 本身的属性窗口中(在导航器窗口中选择)将列设置为 1,将行设置为 2。这应该可以满足您的需求,并且您不必进入代码。

这是在 JFrame 子类(由 NetBeans 创建)的 initComponents() 方法中调用的关键代码,但了解它的位置很重要:

    getContentPane().setLayout(new java.awt.GridLayout(2, 1));

我喜欢 Netbeans,但您必须了解基础知识。

祝你的项目好运。 Swing 是一个超棒的工具集。

【讨论】:

  • 但是我将如何在我现有的项目中做到这一点?我会改变什么?
  • 您必须将 JFrame(或您想要减半的任何容器)的布局管理器更改为 GridBagaLayout。然后制作两个权重相等的网格单元。然后,您将在这些单元格中放置两个容器,并在这些容器中放置您的东西(按钮、文本区域)。
  • 您可以通过 NetBeans UI 更改 LayoutManger。它应该在组件树中。它被称为“导航器”。您也可以右键单击 JFrame 并选择“设置布局”。
  • 这些网格单元,你的意思是像面板然后放上各自的权重吗?
  • 嘿 Navio 我更正并测试了我的解决方案。再试一次。 GridLayout 更简单,解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2014-09-21
  • 2018-02-23
  • 2014-06-15
相关资源
最近更新 更多