gpt4 book ai didi

java - CardLayout - 使其占用最少的空间

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:54 28 4
gpt4 key购买 nike

全部,

我有一个用 Java 创建的表单类型 View 。基于组合框的内容,我需要切换表单的某些方面。我正在使用卡片布局来执行此操作,并且效果很好。

问题是卡片布局使用添加到它们的组件的所有首选尺寸的最大值来确定它们自己的首选尺寸。这意味着当我选择了一个字段较少的选项时,由于切换器组件上卡片布局的首选大小,会出现空白区域。

每次选择更改时,我都尝试手动更改卡片布局面板的首选大小,但这没有任何效果 - 面板始终是适合所有组件的最大尺寸。

combo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
Dimension preferredSize = null;
switch (combo.getSelectedIndex()) {
case 0:
preferredSize = panel0.getPreferredSize();
break;
case 1:
preferredSize = panel1.getPreferredSize();
break;
case 2:
preferredSize = panel2.getPreferredSize();
break;
default:
assert false;
}
patternOptions.setPreferredSize(preferredSize);
c.show(patternOptions, TYPE[combo.getSelectedIndex()]);
}
});

简而言之,我希望 UI 在选择需要更多空间的选项时动态增长,而在需要较少空间时收缩,就像 iTunes 智能列表 UI 一样:

alt text alt text

(我意识到这是一个稍微不同的问题,但它说明了我想要的 - 包含约束字段的面板根据行数增长。我需要我的布局根据选项的数量增长,基于组合框选择)

最佳答案

您可以子类化 CardLayout 并覆盖 preferredLayoutSize 方法,以便它只考虑当前卡片。

要确保框架增长和收缩,您可能需要在设置内容大小后调用 pack。不确定这是否适用于所有情况(它可能不会缩小)但值得一试。

关于java - CardLayout - 使其占用最少的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4134801/

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