그래서 내가 할 :JList의 사용자 정의 렌더러 및 HTML
public class HtmlCellRenderer extends DefaultListCellRenderer{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
public static final int CONST_PREFERED_HEIGHT = 200;
/**
*
*/
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, hasFocus);
label.setPreferredSize(new Dimension(50, CONST_PREFERED_HEIGHT));
if (value != null) {
ExtendedJEditorPane htmlPane = new ExtendedJEditorPane();
label.setLayout(new BorderLayout());
htmlPane.setEditable(false);
htmlPane.setContentType("text/html");
htmlPane.setText(value.toString());
label.add(htmlPane, BorderLayout.CENTER);
}
return label;
}
}
사용자 정의 렌더러. 여기에 새로운 JEditPane을 만들어서 (HTML로 사용자 정의 태그를 그리기 위해) 셀의 레이블에 삽입하지만 결과는 셀이 html을 인식하지 못하고 대신 원시 텍스트를 인쇄합니다.
입력 텍스트는 다음과 같습니다
"<table><tr><td rowspan=\"2\"><img src=\"data:image/jpeg;base64,"+myImageData+\" align=\"left\" /></td><td><h3>Test1 </h3><hr></td></tr><tr><td><p>Test</td></tr></table>"
목록 항목 객체의 toString 실행의 경우이 문자열을 반환합니다.
* 빨리,이 [SSCCE] (HTTP를 게시 "당신이 어떤 생각을 가지고 있습니까?"* 더 나은 도움이 필요한 경우 :
시도 이것을 사용 // sscce .org /). –
는'label.setPreferredSize (새 치수 (50, CONST_PREFERED_HEIGHT는));'스타일'JComponent'에 HTML을 사용하는 경우,이 구성 요소의 크기를 설정 (당신이 그것을 보는 방법에 따라, 또는 넌센스) 단지 많은 의미가 있습니다 HTML의 스타일 내에서. 더 좋게는 너비 또는 높이 중 하나를 설정하고 다른 하나는 내용의 필요에 따라 조정할 수 있습니다. –
무관 : a) 하나 성분 직접 vends 렌더러 범용 컨테이너를 구현하는 대신에, 컨테이너하지 잘못 사용 JLabel의 수행) 생성자 및 재사용 B에서 생성 대신 getXXRendererComponent 구성 요소를 생성하지 않는 (인 JPanel) 구성 요소가 들어 있습니다. c) 크기 지정 힌트를 하드 코딩하지 마십시오. – kleopatra