2013-12-20 5 views
2

세 개의 텍스트 영역으로 구성된 ListCellRenderer를 만들려고합니다. 생성자에서 빈 컨테이너를 만들고 레이아웃을 설정하고 텍스트 영역에 대해 스타일을 설정하고 텍스트 영역을 컨테이너에 추가합니다. 이 컨테이너 ID는 렌더러 구성 요소에 추가되었습니다. 또한 getListCellRendererComponent() 메서드에서 TextAreas 값을 설정하고 있습니다. 이제 문제는이 텍스트 영역의는 하나의 행이까지 제대로 모든 것을 표시이다코드 명 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과 관련이 있다고 생각한다. 따라서 기본값이된다. 사실입니까? 해결 방법이 있습니까? 첨부 화면이

샷입니다

enter image description here

답변

3

렌더러 나는 이것이 내가 이번 주 초에 쓴 블로그의 경우 이유에 대해 좀 더 설명 균일 한 크기를 가지고 : 당신이 더 많은 유연성을 필요로하는 경우 http://www.codenameone.com/3/post/2013/12/deeper-in-the-renderer.html

내가 제안을 그냥 상자 레이아웃이있는 컨테이너를 사용합니다.

+0

목록의 경우 BorderLayout이있는 양식을 만들고 버튼을 South에 배치했습니다. (이것은 버튼을 바닥에 붙이게했다). 위의 문제를 극복하기 위해 List를 북쪽의 컨테이너 (BoxLayoutY)로 대체했습니다. 그러나 이제 북쪽 구성 요소가 스크롤 가능할 때 남쪽의 버튼이 사라집니다. – sanket

+0

목록을위한 렌더러가 아닙니다. 렌더러에 스크롤 가능한 구성 요소를 배치하지 마십시오. –

+0

글쎄, List 구성 요소를 제거하고 컨테이너를 사용했습니다. 어떤 경우이든이 문제가 해결되었습니다. 나는 컨테이너를 북쪽 대신 중앙에 놓았고, – sanket

관련 문제