触发在JList中重新绘制第n行

时间:2009-10-09 04:16:28

标签: java

我可以知道我可以触发系统来重新映射JList中的第n行吗?目前,我所做的是

jList0.repaint();    // Repaint entire JList, which is not efficient.

我只对更新JList中的第n行感兴趣。

请注意,我想这样做的原因是我安装了一个自定义列表单元格渲染器。列表的GUI外观取决于我的应用程序的外部模型阶段。

public ListCellRenderer getListCellRenderer() {
    return new DefaultListCellRenderer() {

        @Override
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
            if (component != null && value != null) {
                final MainFrame mainFrame = MainFrame.getInstance();
                final String portfolioName = mainFrame.getJStockOptions().getPortfolioName();

                if (value.toString().equals(portfolioName)) {
                    component.setFont(new Font(component.getFont().getName(), Font.BOLD, component.getFont().getSize()));
                }
            }
            return component;
        }
    };
}

1 个答案:

答案 0 :(得分:3)

list.repaint( list.getCellBounds(...) );