2012-03-20 25 views
5

JXTable'ı kullanıyorum ve JTable için DefaultRenderers'ı temel alarak bunu nasıl yapacağımı biliyorum, ancak JXTable'ın nasıl yapılacağını öğrenmek istiyorum. HighlighterPipeline dayalı dostça.SwingX JXTable: "satır nesnesine" göre satırları renklendirmek için ColorHighlighter'ı kullanın

Tabloda görüntülenen nesnelerin bir listesi var ve her satır bir nesneyi temsil eder. Belirli bir türdeki nesneleri farklı bir renkle görüntüleyen satırları renklendirmek istiyorum.

ColorHighlighter kullanıyorum gibi görünüyor. Ama bunun için örnekler göremiyorum, "diğer her satırda renk" gibi basit vurgulayıcılar ya da böyle bir şey.

JTable/TableModel paradigmasında "satır nesnesi" diye bir şey olmadığından satır numarasına ihtiyacım var, ancak bunu yapabilirsem, bir yüklemeyi kolayca test edebilir ve vurgulayıcıya söylemek için doğru/yanlış döndürebilirim tekme ya da girme

Birisi bunu işe almak için doğru yönü bulmama yardımcı olabilir mi?

cevap

4

aklınızdan çıkarmayın. ComponentAdapter'i propertly kullanmanın yolunu bulmak zordu.

JXTable table = ... 
final List<Item> itemList = ... 

final HighlightPredicate myPredicate = new HighlightPredicate() { 
     @Override 
     public boolean isHighlighted(
      Component renderer, 
      ComponentAdapter adapter) { 

      Item item = itemList.get(adapter.row); 
      return testItem(item); 
     } 

     public boolean testItem(Item item) { ... } 
} 

ColorHighlighter highlighter = new ColorHighlighter(
     myPredicate, 
     Color.RED, // background color 
     null);  // no change in foreground color 

table.addHighlighter(highlighter); 
+1

bir çözüm buldu memnun - sadece dikkat: adapter.row view-koordinatlarda bulunduğuna dair itemList (muhtemelen?) Modeli koordinatları iken, masa sıralanır eğer testi yanlış sonuçlar döndürür, böylece/süzüldü. Düzeltmek için adapter.convertRowIndexToModel – kleopatra

+0

numaralı telefonu arayarak teşekkürler - JLTable'ın sıralamada GlazedLists sınıflandırma özelliklerini kullanmamayı devre dışı bırakıyorum, bu nedenle dizinlerim son görüntülenen satırlarla tutarlı. yine de teşekkürler! –

+0

p.s. Fosforlu boru hatlarına ne oldu? gittiler mi Ben JXTable highlighters hakkında genel bilgi bulmaya çalışıyorum ve bu, güncel olmayan şeylerin rastgele bir koleksiyonudur. –

İlgili konular