我自己提出一种方法:
对于将所有内容对齐一个轴(例如BoxLayout
)的布局管理器,可以将“未定义维度”指定为Integer.MAX
. 这很奇怪,但它有效。似乎忽略了与对齐轴相反的轴(除非它太小,如问题中所述)。
private final static int UNSPECIFIED_DIMENSION = Integer.MAX_VALUE;
public static void setMinimalDimension(Component comp, int width, int height) {
Dimension dim = new Dimension(width, height);
comp.setMinimumSize(dim);
comp.setPreferredSize(dim);
comp.setSize(dim);
}
public static void setMinimalWidth(Component comp, int width) {
setMinimalDimension(comp, width, UNSPECIFIED_DIMENSION);
}
public static void setMinimalHeight(Component comp, int height) {
setMinimalDimension(comp, UNSPECIFIED_DIMENSION, height);
}
如前所述,与轴对齐布局管理器一起工作。
是的,Java Swing 还有另一个谜团……