java - 相对定位和绝对坐标?

标签 java swing

我正在完成类(class)作业,但我需要一些帮助来理解这一点:

“注意:您的应用程序应保持按钮和复选框的相对位置 当应用程序的框架根据布局管理器和技术调整大小时 模块中涵盖的特性。 IE。你不应该选择绝对坐标 将 JComponent 放置在屏幕上但相对定位,即组件 X 相对于 组件 Y 的右侧和组件 Z 的左侧,这些相对位置应 如果用户调整应用程序框架的大小,则保持不变。”

这是否意味着我不使用BoxLayout.X/Y_AXIS?绝对坐标?

据我了解,我必须使用多个面板?如果是这样,我的代码包含登录信息,当我登录时,我将如何更改框架的颜色?

最佳答案

在 JFC/Swing 应用程序中布局组件基本上有两种方法:

  • 为每个容器分配一个负责布局的布局管理器;请参阅 @Shakedown 提供的链接
  • 为每个 JComponent 分配一个其左上角的绝对位置,从顶级容器的 (0,0) 开始计算左上角的像素 ( see here对于那是什么)组件所在;请参阅this tutorial关于绝对定位。
正如您可以想象的那样,第二种方式存在一些问题:它根本不是动态的,并且很容易出错,仅举几个最突出的问题。在大多数情况下,使用布局管理器不仅是安排 GUI 的更简单的方式,也是更智能的方式。

布局管理器实际上所做的是为每个 JComponent 分配一个绝对位置,该绝对位置源自运行时布置组件的布局,动态 - 通常使用 JComponent 的 PreferredSize;例如,FlowLayout 将为每个 JComponent 分配一个绝对位置,使其完全适合其前面的 JComponent 的右侧,并在需要时换行。调整容器大小时,其中的所有组件都将重新计算其位置。请参阅here了解详情。

关于您关于 BoxLayout 的问题,它是一个布局管理器; BoxLayout.X_AXISBoxLayout.Y_AXIS 用于确定 BoxLayout 管理的 JComponent 的排列方向;它们不是指绝对定位。请参阅the Javadocs on BoxLayoutthe Java tutorial on BoxLayout了解详情。

总而言之,您的任务是使用布局管理器;标准 java 库中提供的不同布局管理器在教程中进行了足够详细的描述(请参阅链接,浏览站点)。玩得开心!

关于java - 相对定位和绝对坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453258/

相关文章:

java - 在 ConstraintLayout 上使用 animateLayoutChanges 时出现小故障

java - 查找/替换高亮替换词 Netbeans/Java

java - JCombobox 和 Switch 语句

java - 在不关闭对话框的情况下取消在 JFileChooser 中选择文件

java - 为什么 Map#put 指定@throws ClassCastException?

java - 用于渲染 JSON 的 Spring 模板引擎

java - 从 C 语言调用 Java 函数

java - JInternalFrame底部阴影问题

java - JComboBox 首次运行后不显示下拉箭头

java - 通过 API 的非安全 URL 发送 idToken 是否安全?