2011-12-17 29 views
8

JDesktopPane içinde etkin (netleme) çerçevesi (JInternalFrame) nasıl edinilir? MDI not defterim için buna ihtiyacım var (herkes bunu kullanacak, sadece bir eğitim projesi değil). Api'ye baktığımda, sadece JInternalFrames'ı aktif olan değil, tüm fonksiyonlarını görebiliyorum.JDesktopPane - etkin çerçeve nasıl elde edilir

cevap

10

Kullanım JDekstopPane.getSelectedFrame() yöntemi (doc itibaren . Bu JDesktopPane şu anda aktif JInternalFrame veya hiçbir JInternalFrame etkin durumdaysa boş) ya da JDesktopPane.getAllFrames() anda masaüstüne görüntülenen tüm JInternalFrames listesini almak ve isSelected() yöntemini kontrol etmek.

+1

Teşekkürler. Bana gerçekten yardım ettin. API'yi kullanmak için getActiveFrame veya getFocusedFram gibi bir şey aradım ve getSelectedFrame göz ardı edildi;) –

+1

+1. Gevşek kaplin için – camickr

2

List<JInternalFrame> yapın ve yinelediğiniz gibi isSelected()'u işaretleyin.

Ek: Bir menüden iç çerçeve seçmek için Action numaralı example numaralı bağlantıya bakın.

+3

Not: [JDesktopPane.getAllFrames()] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JDesktopPane.html#getAllFrames()) bir dizi döndürür, bu nedenle yanı sıra sadece diziyi yineleyin (bir liste kullanmak yerine). Tekerleği yeniden icat etmek için –

+1

-1. GetSelectedFrame() veya getAllFrames() kullanılacaktır. – camickr

+0

Bu adil bir polis. – trashgod

2

How to Use Internal Frames başlıklı Java eğitimine baktınız mı? Kodunuzda bir InternalFrameListener (API) (Tutorial) gerekir ve olayları etkinleştir/devre dışı bırak. Etkinleştirilmiş, iç çerçevenin üstüne getirildiği anlamına gelir; Devre dışı bırakılmış demektir artık üstünde değil. JDesktopPane, JLayeredPane'u genişletdiğinden, eklenmiş bileşenlerin z sırasını da ayarlayabilirsiniz.

Tüm bölmelerin üzerinde yineleme yok - olayları kullanın.

Herhangi bir nedenle, olay odaklı bir yaklaşım kullanmak yerine kullanıcı arayüzünü araştırmayı tercih ediyorsanız, getSelectedFrame'u arayarak etkin JInternalFrame'u döndürebilirsiniz. Kimsenin neden bahsetmediğinden emin değilim.

+0

+1. Detaylandırır mısın? – trashgod

+0

@trashgod 'JInternalFrames' oluşturulduğu için oldukça basittir, hangi frame'in aktif olduğunu ve hangilerinin aktif olmadığını takip eden bir “InternalFrameListener” eklenmiştir. Posterin olayları umursamaması durumunda cevabımı biraz güncelledim - 'JDesktopPane'' getSelectedFrame' yöntemine sahip. – Paul

+0

> Kodunuzda bir InternalFrameListener (API) (Eğitici) gerekir ve etkinlikleri etkinleştir/devre dışı bırak. > Etkinleştirilmiş, iç çerçevenin en üste getirildiği anlamına gelir; Devre dışı bırakılmış demektir artık üstünde değil. > JDesktopPane, JLayeredPane öğesini genişlettikten sonra, ona eklenen bileşenlerin z sırasını da ayarlayabilirsiniz. " Başka bir deyişle," Kodunuzu nasıl daha kafa karıştırıcı ve daha basitleştirebilirsiniz? "Başlıklı başka bir ipucu. kodumu o kadar basit ki, Java'yı hiç kullanmamış olsanız bile anlayabiliyorsunuz. –

İlgili konular