0

我正在使用 Swing 中的一种图像库(基本上是 jscrollpane 的视图),但我有点卡住了。

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

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

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

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

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

谢谢

4

1 回答 1

2

无需先布局。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()方法,您可以使用容器子项的最小/最大/首选大小来计算所需的大小并将其返回到 preferredLayoutSize(和 minimumLayoutSize)中。然后只需使用计算。

于 2013-06-21T05:19:51.217 回答