2
我想创建一个由三个文本区域组成的ListCellRenderer。在构造函数中,我创建一个空容器,设置其布局,为文本区域设置样式,并将文本区域添加到容器中。此容器ID进一步添加到渲染器组件。此外,我在getListCellRendererComponent()方法中将值设置为我的TextAreas。 以下是我的代码:Codename one ListCellRenderer
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计算组件的大小有关,而不知道它将包含的数据,因此它是默认值。这是真的 ?有没有解决方法?附件是一个屏幕截图
对于我已经创建了一个带有BorderLayout的窗体的列表,并且该按钮被放置在南部。 (这使得按钮粘到底部)。为了克服上述问题,我在北部用容器(BoxLayoutY)替换了列表。但是现在当北部组件可滚动时,南部的按钮消失。 – sanket
您的意思是渲染器不在列表中,对吗? 您不应将可滚动组件放置在渲染器中。 –
好吧,我删除了List组件并使用了一个容器。无论如何,这现在已经解决了。我把容器放在中心而不是北面, – sanket