Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码名一ListCellRenderer_Java_Codenameone - Fatal编程技术网

Java 代码名一ListCellRenderer

Java 代码名一ListCellRenderer,java,codenameone,Java,Codenameone,我正在尝试创建一个由三个文本区域组成的ListCellRenderer。在构造函数中,我创建一个空容器,设置其布局,为文本区域设置样式,并将文本区域添加到容器中。此容器id进一步添加到渲染器组件。此外,我正在GetListCellRenderComponent()方法中为我的TextAreas设置值。 以下是我的代码: class PropertiesRenderer extends Container implements ListCellRenderer<PropertyAssess

我正在尝试创建一个由三个文本区域组成的ListCellRenderer。在构造函数中,我创建一个空容器,设置其布局,为文本区域设置样式,并将文本区域添加到容器中。此容器id进一步添加到渲染器组件。此外,我正在GetListCellRenderComponent()方法中为我的TextAreas设置值。 以下是我的代码:

 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;
    }

}
类属性Renderer扩展容器实现ListCellRenderer{
私有文本区域名称=新文本区域(“”);
私有TextArea assessedValue=新TextArea(“”);
私有TextArea地址=新TextArea(“”);
专用标签焦点=新标签(“”);
公共属性Renderer(){
setLayout(新的BorderLayout());
容器con=新容器(新的BoxLayout(BoxLayout.Y_轴));
con.getStyle().setBorder(Border.createBevelRaised());
name.setEditable(false);
name.getStyle().setboorder(null);
con.addComponent(名称);
评估值。设置可编辑(假);
assessedValue.getStyle().setBorder(null);
con.addComponent(评估值);
地址.setEditable(false);
address.getStyle().setboorder(null);
con.addComponent(地址);
添加组件(BorderLayout.CENTER,con);
}
公共组件GetListCellRenderComponent(列表列表、属性AsessmentData值、int索引、布尔isSelected){
name.setText(“name:+value.getOwner_name());
assessedValue.setText(“总值:+Value.getTotal_Value());
address.setText(“地址:+value.getAddress());
归还这个;
}
公共组件getListFocusComponent(列表){
返回焦点;
}
}
现在的问题是,它正确地显示所有内容,直到文本区域只有一行。一旦文本区域有多行,它就开始隐藏组件。我认为这与CN1在不知道组件将包含的数据的情况下计算组件的大小有关,因此它是默认值。这是真的吗?有解决办法吗?附件是一个屏幕截图


渲染器的大小是统一的,我在本周早些时候写的博客中详细解释了为什么会出现这种情况:


如果您需要更大的灵活性,我建议只使用框布局为Y的容器。

对于列表,我已经创建了一个带有BorderLayout的表单,并且按钮位于南部。(这使按钮粘在底部)。为了克服上述问题,我在north用一个容器(BoxLayoutY)替换了列表。但是现在,当北方组件可以滚动时,南方的按钮消失了。你是说对于渲染器而不是列表,对吗?你不应该在渲染器中放置可滚动的组件。我删除了列表组件并使用了一个容器。无论如何,这一问题现在已经得到解决。我把容器放在中心而不是北面,404作为链接