세 개의 텍스트 영역으로 구성된 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과 관련이 있다고 생각한다. 따라서 기본값이된다. 사실입니까? 해결 방법이 있습니까? 첨부 화면이
샷입니다
목록의 경우 BorderLayout이있는 양식을 만들고 버튼을 South에 배치했습니다. (이것은 버튼을 바닥에 붙이게했다). 위의 문제를 극복하기 위해 List를 북쪽의 컨테이너 (BoxLayoutY)로 대체했습니다. 그러나 이제 북쪽 구성 요소가 스크롤 가능할 때 남쪽의 버튼이 사라집니다. – sanket
목록을위한 렌더러가 아닙니다. 렌더러에 스크롤 가능한 구성 요소를 배치하지 마십시오. –
글쎄, List 구성 요소를 제거하고 컨테이너를 사용했습니다. 어떤 경우이든이 문제가 해결되었습니다. 나는 컨테이너를 북쪽 대신 중앙에 놓았고, – sanket