JLabel'in eklendiği panelin adını almak mümkün mü? Farklı JPanellere bazı JLabels ekledim ve jLabels'in yerleştirildiği panele göre farklı fare olayları aramak istiyorum.JLabel - ana paneli al?
cevap
label.getParent()
'u çalıştırırsanız, etiketin içinde bulunduğu paneli döndürür.
parent.getName()
numaralı telefonu arayabilirsin, ancak şimdi buna ihtiyacınız olmayan bir nesneye sahip olacaksın.
basit yolu bunu yapmak için:
//label1 and label2 are JLabel's
//panel1 and panel2 are JPanel's
doActionsForLabel(label1);
doActionsForLabel(label2);
public void doActionsForLabel(JLabel label)
{
if (label.getParent() == panel1)
{
//do action #1
}
else if (label.getParent() == panel2)
{
//do action #2
}
}
Yukarıdaki kod etiketleri JPanels direkt çocukları olduklarını varsayar. Ancak, bu her zaman böyle olmayabilir, bazen büyük torunlar ya da panelin büyük torunları. Bu durumda, üst sıradaki hiyerarşiden geçmek için biraz daha karmaşık işlemler gerçekleştirirsiniz. , label.getParent() == panel1
ait
yerine yerine bu veya benzeri yapın: Eğer bileşenlerin eşitliği için test etmek istemiyorsanız Gordon gibi
public void doActionsForLabel(JLabel label)
{
boolean flag = true;
Component parent = label;
while (flag)
{
parent = parent.getParent();
if ((parent != null) && (parent instanceof JPanel))
{
if (label.getParent() == panel1)
{
//do action #1
}
else if (label.getParent() == panel2)
{
//do action #2
}
}
else
{
flag = false;
}
}
}
Eğer bileşenlerin özelliklerinin eşitliği test edebilirsiniz, önerdi :
label.getParent().getName().equals("panel_1_name")
.
Eğer etiket hiyerarşisinde aşağı, örneğin, SwingUtilities
bazı kullanışlı işlevler var ne kadar derin bilmiyorsanız: SwingUtilities.getAncestorOfClass(Class, Component)
Etiketlerinizde üst kapsayıcı adını kontrol alternatifi olabilir olayı ana taşıyıcıya basitçe iletmek ve ebeveynin işi yapmasına izin vermek. Neyi başarmaya çalıştığınıza bağlı olarak, etiketleri ebeveynlerden ayırmak yararlı olabilir. Yönlendirme olayları Component. processEvent (AWTEvent)
kullanılarak yapılabilir.
Ve 'public static Container getAncestorNamed (Dize adı, Bileşen comp)', adını biliyorsanız. Teşekkürler! – FaithReaper
- 1. JLabel Resmi al
- 2. MSBuild'de ana dizini al
- 3. JLabel
- 4. JLabel
- 5. JLabel
- 6. JLabel to JEditorPane'a nasıl eklenir?
- 7. Altı çizili JLabel
- 8. JLabel yazı tipini değiştir
- 9. JLabel, JPanel'in solunda nasıl hizalanır?
- 10. JLabel merkezi içeriği 3 satırda
- 11. JLabel üzerinde değişiklik metni olayı
- 12. JLabel veya JTable hücresindeki ActionListener
- 13. Jlabel bir simgeye doğru yollanıyor
- 14. JTextField, JLabel stili ile GTKLookAndFeel
- 15. Alt paneli devre dışı bırakarak alt paneli etkin tutuyorken
- 16. WPF'de "Infinite" Paneli
- 17. Saydam Önyükleme Paneli
- 18. Öğeleri kırpmayan Sanallaştırma Paneli
- 19. Extjs kaydırılabilir paneli
- 20. CakePHP admin paneli
- 21. .NET Dock Paneli?
- 22. Başka bir ana sayfanın içindeki bir sayfadan metin al asp.net
- 23. al
- 24. Sözdizim hatası Konum paneli sözdiziminde
- 25. R data.table sayım paneli verileri
- 26. Netbeans'teki 'Projeler' paneli nasıl açılır
- 27. asp.net mvc kendo paneli çubuğu
- 28. Onay kutularındaki Extjs ızgara paneli
- 29. Android bildirim paneli genişliğini alın
- 30. WorldWind Paneli nasıl yeniden boyutlandırılır?
bu çok yardımcı oldu :) – Kari
Hoş Geldiniz ... – bguiz