带有自定义渲染器的JList

时间:2011-01-06 15:13:00

标签: java swing jpanel jlist

我有一个显示多个JPanel的JList,我创建了一个返回新JPanel的自定义渲染器。 JPanels显示在JList中,但是它们无法访问,我无法选择它们,如果我有一个按钮或文本区域,我就无法按下它。 我想尝试,如果这在JList中工作,因为我想做进一步的分页。我设法通过向Jscroll窗格添加面板来使其工作,但是希望使JList工作正常。

由于

3 个答案:

答案 0 :(得分:12)

答案 1 :(得分:0)

  

我无法选择它们,如果我有一个按钮或文本区域,我就无法按下它

渲染器只是一个组件的绘画。它不是真正的组件,因此您无法单击按钮或在文本区域中输入文本。

您需要使用真实组件。因此,最好使用您的组件创建自定义面板,然后将面板添加到已添加到滚动窗格的另一个面板。

答案 2 :(得分:0)

这是我的解决方案:

public class AccountRenderer extends DefaultListCellRenderer {

private static final long serialVersionUID = 1L;

@Override
public Component getListCellRendererComponent(JList list, Object value,
        int index, boolean isSelected, boolean cellHasFocus) {
    JLabel renderer = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    if (value != null) {
        Account entry = (Account) value;
        renderer.setText(entry.getName());
    }
    return renderer;
}

}

相关问题