2011-02-23 21 views
23

En Java, ¿es posible obtener el ancho y la altura del JFrame sin el título y otros bordes?JFrame: obtener el tamaño sin fronteras?

frame.getWidth() y frame.getHeight() 1 parece devolver el ancho incluyendo el borde.

Gracias.

Respuesta

32
 

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

Gracias! frame.pack(); debería existir antes de este comando. De lo contrario, va a regresar (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

Esto funciona bien

frame.getContentPane().getSize(); 

Pero no si no se ha añadido contenido todavía. En mi caso, quería calcular las dimensiones internas de JFrame antes de agregar contenido, por lo que podía dividir el contenido en consecuencia. Esto es lo que se me ocurrió.

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); 
Cuestiones relacionadas