我正在尝试创建一个由三个文本区域组成的ListCellRenderer。在构造函数中,我创建一个空容器,设置其布局,为文本区域设置样式,并将文本区域添加到容器中。此容器id进一步添加到呈现器组件中。此外,我在getListCellRendererComponent()方法中为我的getListCellRendererComponent设置值。以下是我的代码:
class PropertiesRenderer extends Container implements ListCellRenderer<PropertyAssessmentData> {
private TextArea name = new TextArea("");
private TextArea assessedValue = new TextArea("");
private TextArea address = new TextArea("");
private Label focus = new Label("");
public PropertiesRenderer() {
setLayout(new BorderLayout());
Container con = new Container(new BoxLayout(BoxLayout.Y_AXIS));
con.getStyle().setBorder(Border.createBevelRaised());
name.setEditable(false);
name.getStyle().setBorder(null);
con.addComponent(name);
assessedValue.setEditable(false);
assessedValue.getStyle().setBorder(null);
con.addComponent(assessedValue);
address.setEditable(false);
address.getStyle().setBorder(null);
con.addComponent(address);
addComponent(BorderLayout.CENTER, con);
}
public Component getListCellRendererComponent(List list, PropertyAssessmentData value, int index, boolean isSelected) {
name.setText("Name: " + value.getOwner_Name());
assessedValue.setText("Total Value: " + value.getTotal_Value());
address.setText("Address: " + value.getAddress());
return this;
}
public Component getListFocusComponent(List list) {
return focus;
}
}现在的问题是,它正确地显示所有内容,直到文本区域只有一行为止。一旦文本区域有多个行,它就开始隐藏组件。我认为这与CN1计算组件的大小有关,而不知道它将包含哪些数据,因此它是默认的。这是真的吗?有解决办法吗?附件是屏幕截图

发布于 2013-12-20 20:44:49
渲染器有统一的尺寸,我在本周早些时候写的博客中解释了为什么会这样:https://www.codenameone.com/blog/deeper-in-the-renderer.html。
如果您需要更多的灵活性,我建议您只使用带有盒子布局Y的容器。
https://stackoverflow.com/questions/20704442
复制相似问题