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