2011-11-01 30 views
6

JXTreeTabble kullanarak treetable yapıyorum ve seçili değere bağlı olarak menu öğelerini devre dışı bırakmak/etkinleştirmek istiyorum. Yani, benim table model bu kodu koymak için çalıştı:JXTreeTable'dan Seçilen Değer Alın

public Object getValueAt(int index) { 
     if (index >= 0 && index < root.getSize()){ 
      return root.get(index); 
     } 

     return null; 

    } 

table içeriği Genişletilmemişler ise

yukarıdaki çalışır sorunu. selected row'un index değeri able model numaralı size'dan daha büyük olabileceğinden (modelde iki öğe olabilir ve her şey genişletildiğinde satır 10'a sahip olabilir). Ayrıca, parent'un object type'u children'dan farklıdır (bir kitabı çocuklarla birlikte bölümler halinde düşünün).

Yukarıdakileri doğru şekilde yapmanın bir yolu olarak ne önerirsiniz?

cevap

0

Dizinler, görünüm ve modelde farklılıklar gösterebilir. Öncelikle satır numarasını index varsayarak convertRowIndextToModel()

6

kullanılarak seçilen satırın dizini ayarlamak zorunda denemek düğüm nesnesi ele almak için aşağıdaki:

TreePath path = treetable.getPathForRow(index); 
Object node = path.getLastPathComponent(); 

treetable kullanarak tabloya işaretçi olurdu bu masa modeli. JXTreeTable adresinden

+0

almak için nesneyi ayrıştırmak başladı. –

1

, treeTable öğesinden satır ve nodeClass öğelerine dayalı değere erişebilirsiniz. örnek:

int row=treeTable.getSelectedRow(); 
//get value from column 
Object object= treeTable.getValueAt(row, yourColumn); 
TreePath path= treeTable.getPathForRow(row); 
Object o= path.getLastPathComponent(); 
Class<? extends Object> entity=o.getClass(); 

Eğer nesneden bir Class alacağı sonuç, sen cevabı değerini

İlgili konular