Java 根据实际代码名计算首选高度';s组件宽度(2)
目前,我正在创建一个代号为one的组件,其高度取决于宽度。Codename one(Shai Almog)回答说,这不容易做到,布局算法不打算处理这一需求。请看这里的原始问题。有人建议在Codename oneJava 根据实际代码名计算首选高度';s组件宽度(2),java,codenameone,Java,Codenameone,目前,我正在创建一个代号为one的组件,其高度取决于宽度。Codename one(Shai Almog)回答说,这不容易做到,布局算法不打算处理这一需求。请看这里的原始问题。有人建议在Codename oneTextArea组件中使用这种方法,但显然这种方法本身并非没有问题 不,我想用另一种方法来解决这个问题。我想知道人们是否可以就这是否有效给出反馈。基本思想是假设表单组件作为层次结构中的最高组件,其宽度和高度不依赖于布局管理器,而是直接依赖于显示器。因此具有固定的尺寸。表单有一个子容器con
TextArea
组件中使用这种方法,但显然这种方法本身并非没有问题
不,我想用另一种方法来解决这个问题。我想知道人们是否可以就这是否有效给出反馈。基本思想是假设表单
组件作为层次结构中的最高组件,其宽度和高度不依赖于布局管理器,而是直接依赖于显示器。因此具有固定的尺寸。表单有一个子容器
contentPane,我假设它也有固定大小。然后我们可以创建一个自定义的LayoutManager
来使用这些信息。假设我们从一个BoxLayout
扩展并重载其方法layoutcainer(Container c)
和getPreferredSize(Container c)
来使用此信息,使用c.getParent().getParent()instanceof Form
来了解宽度和高度(根据具体情况,为自定义可调整大小的组件创建方法,例如GetPreferedForHeight(int-height)
或初始化方法setFixedWidth(int-width)
,该方法会影响通常的GetPreferredh()
和GetPreferredw()
调用
最好是使用方法扩展组件,例如hasFixedWidth()
(或者在一个调用中组合宽度和高度hasFixedDimension(int轴)
)和widthDependsOnHeight()
这将使BoxLayout
独立于硬编码的类名,但它看起来不能像使用
UIBuilder.registerCustomComponent("Container", nl.localhost.Container.class);
UIBuilder.registerCustomComponent("Form", nl.localhost.Form.class);
似乎没有效果
我没有考虑过滚动或旋转设备(从而重新绘制表单),但我认为这不会带来问题。上述方法有效吗
最好的祝愿Marc K我们在组件中经常做的是将其首选宽度设置为
Display.getInstance().getWidth()
,这会向布局管理器提示我们的意图
旋转设备时,将再次调用calcPreferredSize()
,显示宽度将为物理设备高度
您使用的注册码与旧的GUI生成器相关。我不明白为什么它与当前的问题相关。我们在组件中经常做的是将它们的首选宽度设置为
Display.getInstance().getWidth()
,这会向布局管理器提示我们的意图
旋转设备时,将再次调用calcPreferredSize()
,显示宽度将为物理设备高度
您使用的注册码与旧的GUI生成器相关。我不太明白为什么它与手头的问题相关。可能。为什么不试试?可能。为什么不试试?好吧,那么再次使用
calcPreferredSize()
。感谢Display.getInstance().getWidth()Display.getInstance().getWidth()
tip,这应该是足够的信息来完成。Marc K。好的,再次使用calcPreferredSize()
。感谢Display.getInstance().getWidth()Display.getInstance().getWidth()
tip,这应该是足够的信息来完成。Marc K。