相对定位和绝对坐标?

时间:2011-12-10 00:08:31

标签: java swing

我正在完成课程作业,但我需要一些帮助来理解这一点:

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

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

根据我的理解,我必须使用几个面板?如果是这样,我的代码包含一个登录名,当我登录时如何更改框架的颜色?

2 个答案:

答案 0 :(得分:4)

这听起来像是说你需要使用布局管理器而不是绝对定位。是的,您最终会使用多个组件(可能是JComponentJPanel),每个组件都有自己的布局管理器。您可以通过从独立组件开始并使用布局管理器将它们组合在另一个组件中来构建UI。

从这里开始:Laying Out Components

如果您有特定问题,例如更改相框的颜色,最好将其作为一个单独的问题(假设尚未存在类似问题)。

答案 1 :(得分:4)

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

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

布局管理器实际上做的是为每个JComponent分配一个绝对位置,该位置是在运行时通过动态布局组件的布局 - 通常使用JComponents的PreferredSize;例如,FlowLayout将为每个JComponent分配一个绝对位置,使其完全适合JComponent之前的权利,在需要时包装行。调整容器大小时,其中的所有组件都将重新计算其位置。有关详细信息,请参阅this tutorial

关于BoxLayout的问题,这是一个布局管理员; BoxLayout.X_AXISBoxLayout.Y_AXIS用于确定BoxLayout管理的JComponents在哪个方向排列;他们没有提到绝对定位。有关详细信息,请参阅herethe Javadocs on BoxLayout

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

相关问题