2009-10-09 7 views
2

Puis-je savoir que je peux déclencher le système pour repeindre la ligne n dans JList? Actuellement, ce que j'ai fait estDéclencher pour repeindre nième ligne dans JList

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

Je suis seulement intéressé à mettre à jour la nième ligne dans JList.

S'il vous plaît noter que la raison pour laquelle je veux faire, c'est que j'installe un moteur de rendu de liste personnalisée. L'aspect graphique de la liste dépend de l'étape du modèle externe de mon application.

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; 
     } 
    }; 
} 

Répondre

3
list.repaint(list.getCellBounds(...)); 
Questions connexes