【问题标题】:Temporal operations with a layout manager? Best design?使用布局管理器进行时间操作?最好的设计?
【发布时间】:2013-06-17 23:14:17
【问题描述】:

我正在 Swing 中开发一种图片库(基本上是一个 jscrollpane 的视图),但我有点卡住了。

我已经修改了 MigLayout,因此它可以为我提供一些我需要的额外功能。

我有一些逻辑部分,为了做出决定,我必须在一些特定的约束条件下布置我的视图,以查看它的外观,例如 100% 的宽度、列数、特定缩放级别下的列中最大的组件等。

但是,我不想在执行这些“测试”时看到我的组件闪烁。所以我正在做的是用我的组件副本创建第二个孤立的 JPanel,这样我就可以在不影响我最终和有效视图的情况下进行这些“测试”。但是这个解决方案对我来说听起来有点拙劣而且有点迟钝。在进行这些测试时,我还可以执行诸如禁用“setBounds”之类的操作,但这也不好。

我知道最好的办法是不进行这些测试,但这听起来说起来容易做起来难。无论如何,我也不相信这一点。

你有没有遇到过这种情况?

谢谢

【问题讨论】:

  • 发布SSCCE 来说明您的问题。

标签: java image swing layout layout-manager


【解决方案1】:

无需先布局。 LayoutManager 有方法先计算大小

Dimension preferredLayoutSize(Container parent);

/**
 * Calculates the minimum size dimensions for the specified
 * container, given the components it contains.
 * @param parent the component to be laid out
 * @see #preferredLayoutSize
 */
Dimension minimumLayoutSize(Container parent);

/**
 * Lays out the specified container.
 * @param parent the container to be laid out
 */
void layoutContainer(Container parent);

因此,我建议编写calculatePreferrence() 方法,在该方法中,您使用容器子项的最小/最大/首选大小来确定所需大小并将其返回到首选布局大小(和最小布局大小)中。然后只需使用计算即可。

【讨论】:

  • 我知道.....但只要您不需要检查具有不同组件和尺寸约束的尺寸,这是真的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2014-01-08
  • 1970-01-01
  • 2011-09-14
  • 2014-08-10
  • 1970-01-01
  • 2018-02-28
相关资源
最近更新 更多