我正在使用SpanLabel组件,但是在屏幕上,当文本大小较小时,文本内容不会占据全宽 有人可以帮忙吗?
答案 0 :(得分:0)
如果宽度不确定,则可能发生这种情况。 SpanLabel
将无法重排,充其量只能使其自己的Container
调整大小。有两种解决方案:
确定性层次结构-通常最好,但并非总是可能
使用TextArea
-有时这可以通过减小层次结构深度来解决此问题。
确定性布局意味着元素的大小由层次结构以清晰的方式确定。例如。 BoxLayout.Y在X轴上具有确定性,因为它为X轴上的组件提供了所有可用空间。 FlowLayout
不确定,因为它为组件提供了首选大小。
某些布局可以来回移动,并根据其轴确定性。
这很重要,因为当我们布局组件时,我们从上到下。因此,我们遍历Form
到其子节点,询问每个子节点的首选大小。如果此时SpanLabel
不知道它的大小,则会给出错误的值,并且由于我们不对UI进行重排,我们以后也无法真正解决该问题。回流会最大程度地造成潜在的无限循环和性能问题。
我们尝试通过在revalidate()
内进行TextArea
调用来解决某些行为,但这有其局限性。如果层次结构太深,则已经设置了首选大小,因此无法适应。 SpanLabel
只是一个Container
和一个TextArea
和一个Label
(用于图标)。因此,仅使用TextArea
就可以稍微简化层次结构,有时可能就足够了。例如
TextArea t = new TextArea(myText);
t.setEditable(false);
t.setFocusable(false);
t.setUIID("Label");