posted 14 years ago
Hi all,
I have a list which use a panel as the renderer. The height of the renderer panel is depends on the text in that panel. (See the Image-1)
But the problem is that all renderer panels becomes the size of the biggest panel.
I override the renderer panel's (NoticePanel) paintCopmonent() and draw the lines and the curve. This NoticePanel has a jtextarea and a label to accommodate the text. I create this panel inside the renderer's getListCellRendererComponent() method with the correct height and with. Actually i calculate the height depending on the text. I set that size in NoticePanel's preferredSize() in its initialize() method.
class NoticeCellRenderer extends DefaultListCellRenderer
{
private final CambioPanel panel = new CambioPanel();
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus)
{
// Calculate the height of the component and create the panel with that height.
NoticePanel noticePanel = new NoticePanel(value, height);
return noticePanel;
}
}
public class NoticePanel extends CambioPanel
{
private void initialize()
{
this.setPreferredSize(width,height);
}
}
But all the NoticePanel that are in the list has same height. First panel in the list (with a red color arrow) has a wrong size. It has taken the size of the other panel which has the correct height.
How can I get different sizes on different cells in this list?
Thanks.
Image-1.JPG