2011-12-10 49 views
2

我在完成课程学习的过程,但我需要一些帮助理解这一点:相对定位和绝对坐标?

“注意:您的应用程序应该保持按钮和复选框 的相对位置,当应用程序的框架是基于调整布局管理器和模块中涵盖的技术,也就是说,当屏幕上放置JComponents时,不应选择绝对坐标,而是相对定位,即组件X到组件Y右侧的 ,并且位于组件Z的左侧,以及组件Z左侧的 如果用户调整应用程序的框架大小,则应维护这些相对位置 。“

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

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

+0

这[嵌套布局示例](http://stackoverflow.com/questions/5621338/about-swing-and-jtable/5630271#5630271)就是这样做的。 –

回答

4

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

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

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

关于您关于BoxLayout的问题,那是一个布局管理器; BoxLayout.X_AXISBoxLayout.Y_AXIS用于确定BoxLayout管理的JComponents将被布置在哪个方向上;他们没有提到绝对定位。详细信息请参见the Javadocs on BoxLayoutthe Java tutorial on BoxLayout。总之,你的任务是使用布局管理器;本教程中详细介绍了标准Java库中可用的不同布局管理器(请参阅链接,浏览网站)。玩的开心!

4

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

从这里开始:Laying Out Components

如果你有如更改框的颜色具体问题,这将会是最好问,作为一个单独的问题(假设类似的问题已经不存在)。