Onay kutuları JTree

oy
12

Bir JTree için onay kutularını eklemeniz gerekir. Özel bir TreeCellRenderer / TreeCellEditor sağ yaklaşım gibi görünüyor. Şimdiye kadar kullanılan bu web sayfasında CheckBoxNodeRenderer yaklaşımı . Bu iki hata yaptık Tamam çalışır:

  1. onay kutusunun altındaki + üzerindeki ek boşluk vardır; Ben normal JTree olarak bunu aynı kalmasını istiyorum.
  2. Ben (onay kutusunu geçiş yapmak için gayret gösterir) onay kutusunu kendisi tıklayarak ve bir olay dinleyici gelen ağaç düğümü tıklayarak olarak nitelendirildiği, ve ne olursa olsun harekete geçmeye izin vermelidir onay kutusunu (ilişkili metin üzerine tıklayarak ayırt etmek istiyorum uygun)

Bunları yapmak için bir yol var? Onay kutularını JTrees için etrafına baktı, çok bulamıyorum. Jide iyi görünüyor ama ücretsiz açık kaynak yazılım kullanmak gerekir (GPL Tamam değil, LGPL ok) bu durumda. (Ya da kendi onay kutusu ağacını oluşturmak)

Oluştur 03/08/2009 saat 17:06
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
7

2. gelince, panel editörü / oluşturucu olmak yapabilir ve onaylama kutusu ile bir etiket eklemek - etiket metni olurdu ve onay kutusu metin ekletmeye olmaz.

Cevap 03/08/2009 saat 18:00
kaynak kullanıcı

oy
4

@aperkins öneri başına bu, iyi iş gibi görünüyor ne TableCellRenderer yapıyor sona erdi geçerli:

final private JPanel nodeRenderer = new JPanel();
final private JLabel label = new JLabel();
final private JCheckBox check = new JCheckBox();

     ...

// in constructor:
final Insets inset0=new Insets(0,0,0,0);        
this.check.setMargin(inset0);
this.nodeRenderer.setLayout(new BorderLayout()); 
this.nodeRenderer.add(this.check, BorderLayout.WEST);
this.nodeRenderer.add(this.label, BorderLayout.CENTER);

marjlar istenmeyen boşluk kurtulmak için tuşlar gibi görünüyor: (a) onay kutusu marjını düşürmek için JCheckBox.setMargin () çağırarak, ve (b) Jpanel için BorderLayout kullanarak.

Cevap 03/08/2009 saat 20:35
kaynak kullanıcı

oy
9

Bu soru zaten yanıtlandı biliyorum, ama sadece bazı noktaları temizlemek istiyorum:

1) jide Ortak Katman sınıf yolu istisna ve serbest ticari lisans) ile çift lisanslı (GPL olduğunu. Bu, herhangi bir lisans sorunları olmadan Ortak Katman Project kullanmak anlamına gelir. : Onaylamak için aşağıdaki linki kontrol edin http://www.jidesoft.com/products/oss.htm . Ortak Katman bir sınanabilir JTree (com.jidesoft.swing.CheckBoxTree) bir uygulamayı içermektedir.

: 2) O Bahsettiğiniz gereklerine onay kutularıyla JTree kurulumu anlatılmıştır Usta kendisi Santhosh Kumar, 2005 tarihli bir blog var http://www.jroller.com/santhosh/entry/jtree_with_checkboxes . Benim görüşüme göre, okumaya değer.

Cevap 20/02/2012 saat 13:16
kaynak kullanıcı

oy
2

Ben tek başına yayımlandı Salıncak Onay Kutusu Ağacı olarak Maven Central temin projesi, org.scijava:swing-checkbox-tree.

Paket John Zukowski en dayanmaktadır CheckBox Düğüm Ağacı örnek kod. Hiç bağımlılığı ile BSD-2-lisanslı olduğunu.

Bu karıştırma ve eşleştirme izin verir DefaultMutableTreeNodeve CheckBoxNodeDatadüğüm türleri. Ayrıca Yaprak olmayan düğümler olarak kutu düğümleri kontrol sağlar.

Sorunun konu 1. ilgili olarak: Ben tüm platformlarda test etmedi, ama benim OS X sistemlerinde, CheckBoxNodeDatadüğümler olarak piksel cinsinden tam olarak aynı yükseklikte olan DefaultMutableTreeNodedüğümler.

Sorunun konu 2. ilgili olarak: Bir kullandığı JCheckBox+ JLabelbir de JPanel(aynı aperkins anlaşılacağı) (/ check bir düğüm işaretini kaldırın) bir etiket karşı (bir düğüm seçmek için) bir onay kutusunu tıklatarak arasında ayrım yapmak.

Örnek kullanımlar:

Sonraki örnek, bu da ardışık olarak (bakınız kontrol edilen kutular yanıt olarak alt ağaçlar geçmek ya da kontrol için bir kod olan treeNodesChangedbir yöntem).

Cevap 12/10/2012 saat 20:49
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more