gpt4 book ai didi

java - Swing:区分用户引起的组件大小调整和自动组件大小调整的问题(编写自定义布局管理器)

转载 作者:行者123 更新时间:2023-11-30 01:40:00 26 4
gpt4 key购买 nike

我正在尝试编写一个自己的布局管理器

组件的放置和大小必​​须彼此相对
这意味着:当用户拖动某个组件或调整其大小时,其他一些组件组件(但不是由用户手动更改的组件)必须被改变。

Swing 告诉布局管理器每次布局组件其中一些已移动/调整大小。这是一个问题,因此布局管理器本身移动/调整组件大小:
失败了,方法layoutContainer(Container Parent)被调用多次。

整个事情的示例(简化,事实上我的布局管理器确实更复杂的东西):

  • [-组件1-][-组件2-----][-组件3-]
  • 用户将 component2 的大小调整得更小,我的布局管理器会调整其他组件,以便所有组件都占用与以前相同的空间:
    [-组件1-][-组件2-][-组件3-------]
  • 这里,操作应该停止,但它们仍在继续:现在是布局管理器由于调整 component3 的大小而被调用

我怎样才能实现我的意图(以优雅的方式)?
谢谢。

编辑:
根据回答者的建议删除了与线程相关的信息。

最佳答案

在处理事件时,这种反馈循环并不罕见。您可以使用多种方法来打破这个循环,我建议您尝试的一种方法是跟踪组件的计算大小。然后,当您处理调整大小事件时,将实际大小与计算出的大小进行比较,如果相等则返回而不执行任何操作。这可能是最可靠的方法,因为它不依赖于事件的顺序或频率。正如其他地方所述,您不需要接触布局管理器中与线程相关的任何内容。

关于java - Swing:区分用户引起的组件大小调整和自动组件大小调整的问题(编写自定义布局管理器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/928488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com