2014-05-21 51 views
0

我一直在使用這個框架已經有相當長的一段時間了,我想我應該檢查並確保在將它實現到我現在正在使用的大規模Swing應用程序中之前,這是一個好主意。在Java中管理JLists的好方法?

我有兩個接口是在我的系統根目錄:

public interface Colorable { 
    Color getColor(); 
} 

public interface Listable { 
    String getListDisplay(); 
} 

然後,每當我創建一個新JList,我創建了一個新的ListRenderer

private class ListRenderer 
      extends DefaultListCellRenderer { 

     @Override 
     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
      super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
      if (!(value instanceof Listable)) { 
       return this; 
      } 
      if (value instanceof Colorable) { 
       Color c = ((Colorable) value).getColor(); 
       if (c != null) { 
        setForeground(c); 
       } 
      } 
      Listable listable = (Listable) value; 
      setText(listable.getListDisplay()); 
      return this; 
     } 
    } 

這是一個好辦法管理JLists

+0

看起來像[代碼評論](http://codereview.stackexchange.com/)的問題 –

+0

這是一種方法和常見的問題。另一個可能是創建某種「鏈接」渲染器,您可以將它們鏈接在一起以更輕鬆地更改渲染器的某些屬性,例如 – MadProgrammer

回答

0

這是處理這種情況的常用方法。