2009-11-02 16 views
8

Bir JCheckbox için seçili simgeyi farklı bir simgeye değiştirmek istiyorum, örneğin bir JCheckbox için seçili olan devre dışı bırakılmış bir simge olsun. Engelli seçilen simgeyi UIManager'dan nasıl alabilirim?Görünüme erişme ve varsayılan simgeleri hissetme?

UIManager.getIcon("CheckBoxUI.disabledSelectedIcon"); numaralı telefonu denedim Yanlış simge özellik adı bu mu yoksa bu kaynağa ulaşmanın yanlış yolu mu?

cevap

3

AbstractButton kodu içinde bakıldığında, setDisabledSelectedIcon ile (bu durumda veya JCheckBox) AbstractButton belirtilmemişse, disabledSelectedIcon, selectedIcon türetilmiş olduğu anlaşılmaktadır. Bu durumda, UIManager.getIcon ("...") çağrılması, aradığınız nesneyi döndürmez.

DÜZENLEME: Bir JButton bir simge olabilir, tıpkı AbstractButton API tanımlanan bir JCheckBox bir icon alana sahip

Not. Metnin yanında görüntülenen ve atıfta bulunduğunuz "işaretli" veya "işaretlenmemiş" kutu simgesinden ayrı bir resimdir.

Simgesini işaretleyin/işareti kaldırın, UIManager.getObject('CheckBox.icon') ile bulunan tek bir sınıf tarafından işlenir. Bu, Icon alt sınıftır ve hem kontrol edilen hem de işaretlenmemiş durumunun resmini işler. Çeşitli [L&F name]IconFactory sınıflarındaki örneklerini görebilirsiniz.

+1

Sadece selectedIcon, CheckBox.selectedIcon veya CheckBoxUI.selectedIcon, tüm iade boş soran. –

+0

Cevap, standart simgenin nasıl dönüştürüldüğünü öğrenmek için Synth paketinde daha derine inmemdan ilham aldınız. Teşekkürler. –

8

Görünüşe göre varsayılan olarak bir tane yok. En azından, onu aramaya çalıştığımda değil. Anahtar CheckBox içeriyorsa

Sadece UIManager.getLookAndFeelDefaults().keys() anahtarları damping aşağıdaki üretir:

CheckBox.foreground 
CheckBox.border 
CheckBox.totalInsets 
CheckBox.background 
CheckBox.disabledText 
CheckBox.margin 
CheckBox.rollover 
CheckBox.font 
CheckBox.gradient 
CheckBox.focus 
CheckBox.icon 
CheckBox.focusInputMap 

akf's answer okuduktan sonra plaf.synth paketlerinde UIManager kod kazma başladı ve esasen temsilci çağrıları bulundu Standart .icon'u gri bir sürüme dönüştürmeyi denemek ve sınıfları hissetmek için disableCheckedIcon öğesini geçersiz kılın. Bu yüzden bu ile sona erdi:

Icon checkedIcon = UIManager.getIcon("CheckBox.icon"); 
Icon dsiabledCheckedIcon = 
    UIManager.getLookAndFeel(). 
     getDisabledSelectedIcon(new JCheckBox(), checkedIcon); 
İlgili konular