表示日历事件的 swing 组件的布局管理器

Layout manger for swing JComponents representing calendar events

我正在开发一个 java 应用程序,我需要在其中布局表示日历事件的 JComponents,在一个容器中:

我使用自定义布局管理器,我怀疑这是否是正确的解决方案。我根据事件开始和结束时间计算顶部 x 位置和高度。 我还计算了每个事件的重叠事件数,结果是最大重叠数(代表最大列数)。

在计算每个组件的 y 位置和宽度时,由于有许多重叠的可能性,它变得很复杂。

我的问题:是否有可用的布局管理器可以帮助我优化此类布局?还是应该继续使用和改进自定义布局管理器?

在探索了各种布局管理器之后,我很清楚需要完成的工作中最重要的部分是计算约束。

我使用了以下方法:

每个容器代表一天:

  • 根据时间尺度计算每个 JComponent(代表单个日历事件)的 Y 位置(垂直)和高度。
  • 为了计算每个 JComponent 的 X 位置和宽度,我必须分析重叠的组件并找到每个应该占据的“子列”(或子列s)。
  • 遍历所有容器的 JComponents(按高度排序,表示持续时间),检查每个 JComponents 与所有其他 JComponents 的时间重叠。这样做我能够计算出所需子列的数量,以及每个 JComponent 的适当子列(X 位置)。
  • 根据每个 JComponent 的 X 位置,我可以通过搜索下一个重叠的 JComponent(如果有)来计算其宽度。下一个重叠的 JComponent 的 X 位置限制了宽度。

在拥有所有需要的约束后,我可以使用一个简单的布局管理器(如 Formlayout),但我没有看到这样做的价值。为每个 JComponent 设置边界非常简单。