相对定位和绝对坐标?

tes*_*oli 2 java swing

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

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

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

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

G. *_*ach 5

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

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

布局管理器实际上所做的就是为每个 JComponent 分配一个绝对位置,该绝对位置是从运行时动态布置该组件的布局派生的 - 通常使用PreferredSizeJComponent 的 ;例如, aFlowLayout将为每个 JComponent 分配一个绝对位置,使其完全适合其之前的 JComponent 的右侧,并在需要时换行。调整容器大小时,其中的所有组件都将重新计算其位置。详细信息请参见此处

关于您的问题BoxLayout,这是一个布局管理器;BoxLayout.X_AXISBoxLayout.Y_AXIS用于确定 BoxLayout 管理的 JComponent 将按哪个方向排列;它们不是指绝对定位。有关详细信息,请参阅BoxLayout 上的 JavadocsBoxLayout 上的 Java 教程

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