JList пользовательский рендер и HTML - PullRequest
0 голосов
/ 26 ноября 2011

Я хотел бы создать JListh, который будет представлять мой 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.

1 Ответ

3 голосов
/ 26 ноября 2011

Вместо:

return label;

Попробуйте использовать это:

return htmlPane;
...