【问题标题】:Displaying a Button at particular co-ordinates在特定坐标处显示按钮
【发布时间】:2012-01-19 06:30:21
【问题描述】:

如何在窗口的 (x,y) 特定坐标处显示 Button 或 JButton ?

【问题讨论】:

  • 不要这样做。了解如何使用 Layout Managers 定位组件,以便您的代码更易于维护和跨平台移植。
  • 布局,尤其是使用布局内边距和边框(最相关的EmptyBorder),可以比设置绝对位置更好地完成这项工作。

标签: java swing jbutton layout-manager


【解决方案1】:

虽然你可以使用setLocation()

我强烈建议using a Layout Manager,因为在使用布局管理器时,虽然您可以提供大小和对齐提示,但容器的布局管理器对容器内组件的大小和位置拥有最终决定权,相信我这有时可以救你

【讨论】:

    【解决方案2】:

    假设您有一个不想使用 JDK 中任何现有 LayoutManager 的原因,您可能会考虑创建自己的 LayoutManager,特定于您的应用程序

    这很简单——只需继承 FlowLayout,然后在 doLayout 方法中,为您的按钮(和任何其他组件)调用 setBounds。

    这样您就可以在假设您预期的容器大小的情况下指定确切的位置,但在容器缩小或放大的情况下保留重新定位按钮的控制权,

    【讨论】:

    【解决方案3】:

    您可以使用 setBounds() 来指定 x,y 位置和宽度和高度。

    您必须将 Containers 的布局设置为 null,然后您将可以完全控制其中的组件定位。

    有关示例,请参阅 http://zetcode.com/tutorials/javaswingtutorial/firstprograms/

    【讨论】:

    • 您的意思是不存在这可能有用的场景?你怎么知道他想做什么?布局管理器不能与绝对布局混合使用吗?
    • 请参阅setLayout(null) is never necessary. Ever! 以获取这些问题的答案及更多信息。
    • -1 用于链接到完全错误的“教程”(hach...)。 @user905374 - 没有空布局,也没有混合。在 Swing(和 AWT)中,这是一个接近 100% 的规则,以至于看到剩余的间隙需要最高分辨率的光学器件 :-)
    • @kleopatra :毫无疑问,将布局设置为 null 是一个值得商榷的问题。但后来我想到一件事,无论存在什么,都必须有一个目的,一个原因。永远不能说,将布局设置为 null 会有用。毫无疑问,这不是一个好习惯,但同样,我们不能简单地说它完全没用。必须了解语言的各个方面,所以我不会说告诉别人它可以设置为 null,无论如何都是错误的。问候。
    • @GagandeepBali 是的,总是存在 ppb 极端案例 - 但这不是在没有非常充分的理由的情况下将任何人派到那个角落的理由 ;-) 将新手派到那里(如上面链接的那个可怕的教程)是犯罪。
    猜你喜欢
    • 2021-10-15
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2023-01-02
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多