2013-09-23 19 views
0

我有使用列表的j2me LWUIT应用程序。列表中的每个单元格都包含一个图像和一个文本区域。 TextArea不会增长。我在List中读到所有的单元格必须是统一的大小,所以我应该使用ContainerList。LWUIT:列表中的多行文本区域。未通过使用ContainerList解决

With ContainerList我遇到同样的问题!我的TextAreas不会增长。这里是我创建TextArea的地方:

TextArea caption = new TextArea(); 
    caption.getStyle().setBgTransparency(255); 
    caption.getStyle().setBgColor(0x060507); 
    caption.getStyle().setBorder(null); 
    caption.getStyle().setFgColor(0xf0f0f0); 
    caption.getStyle().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM)); 
    caption.getStyle().setMargin(0,10,10,10); 

    caption.setText(m.caption_text); 
    caption.setGrowByContent(true); 
    caption.setSingleLineTextArea(false); 
    cellCon.addComponent(caption); 

cellCon是一个垂直的BoxLayout。即使我删除了图片,他们仍然不会扩展。如果我将cellCon更改为使用BorderLayout并放置图像NORTH和TextArea SOUTH,则TextArea会展开,但与图像重叠(仿佛它仍在尝试保持统一的高度)。

我创造这样的ContainerList:

list = new ContainerList(new BoxLayout(BoxLayout.Y_AXIS),new DefaultListModel(data)); 

如何使这项工作?

+0

如果你想提出另一个问题放在一个新的线程 – Mun0n

+0

并为你提出一个问题。你为什么使用ContainerList?简单的列表不适合你的用户界面? – Mun0n

+0

感谢您的回复。显然,List要求每个单元格的高度相同。显然,这不适用于可变大小的TextAreas。稍后当我有机会时,我会在你的回答中尝试一些建议。 –

回答

0

显然growByContent在ContainerList中不起作用。我最终不得不放弃ContainerList,而是使用Container的Container。在这种情况下,growByContent正常工作。

0

你可以尝试这2种方式,单独或组合。

尝试在组件的构造函数中设置TextArea的文本。我的意思是

TextArea caption = new TextArea(m.caption_text); 

它通常在您在构造函数中设置文本时正常工作。应该调整TextArea的大小。如果你不想使用这个。您可以创建TextArea,然后设置行号和列号为setRows()setColumns()。我不知道为什么,但TextArea调整大小不能很好地工作。

另一个建议是,是否可以尝试将布局设置为BorderLayout,将图像设置在中心位置,文本位于南方?

+0

在构造函数中设置文本似乎没有区别 –

+0

当我执行BorderLayout建议时,TextArea会展开,但看起来向上展开,覆盖图像的一部分。多少图像被覆盖取决于行数......看起来TextArea的最后一行总是在图像下方,我希望第一行是。这是最初让我认为List或ContainerList强制统一单元格高度的原因。 –

+0

如果要在元素中使用不同高度的列表,请不要使用列表组件。创建容器并将它们放在BoxLayout Y中。是设置具有不同高度的元素的唯一方法 – Mun0n

相关问题