2011-02-23 13 views
23

Java'da, JFrame'in Genişliğini ve Yüksekliğini başlık ve diğer sınırlar olmadan elde etmek mümkün mü?JFrame: sınırsız boyut al?

frame.getWidth() ve frame.getHeight() 1 kenarlık da dahil olmak üzere genişliği döndürüyor gibi görünüyor.

Teşekkürler.

cevap

32
 

frame.getContentPane().getSize(); 
 
+3

Teşekkürler! frame.pack(); bu komuttan önce var olmalıdır. Aksi takdirde, geri dönecektir (0; 0). – rzaaeeff

8
frame.pack(); 
System.out.println("frame width : "+getWidth()); 
System.out.println("frame height: "+getHeight()); 
System.out.println("content pane width : "+getContentPane().getWidth()); 
System.out.println("content pane height: "+getContentPane().getHeight()); 
System.out.println("width of left + right borders: "+(getWidth()-getContentPane().getWidth())); 
System.out.println("height of top + bottom borders: "+(getHeight()-getContentPane().getHeight())); 
2

Bu

frame.getContentPane().getSize(); 

Ama içeriği eklememişlerse henüz çalışıyor. Benim durumumda, içerik eklemeden önce JFrame'in iç boyutlarını hesaplamak istedim, böylece içeriği buna göre bölebilirim. İşte neyle geldiğini.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 

pack(); // Need this, otherwise insets() show as 0. 
int scrW = (int)screenSize.getWidth(); 
int scrH = (int)screenSize.getHeight(); 
    int innerW = scrW - getInsets().left - getInsets().right; 
    int innerH = scrH - getInsets().top - getInsets().bottom; 

    // Need to setSize(), otherwise pack() will collapse the empty JFrame 
    setSize(scrW, scrH);