2011-08-22 20 views
7

Ho creato un JFrame e il tentativo di ottenere le sue dimensioni sta dando un risultato errato, rispetto a quello che mi aspetto.JFrame: dimensioni effettive del contenuto

Ho determinato che include i bordi del sistema operativo attorno ai bordi e la barra del titolo.

Come posso ottenere/impostare la dimensione reale che ho a disposizione per il rendering?

+1

Sei sicuro che sia un 'JPanel' e non un' JFrame'? Se è il secondo, usa 'frame.getContentPane(). GetSize()'. Puoi anche trovare [questa domanda] (http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jframe) utile ... –

+0

Oh, mi dispiace, si, era un JFrame. Non posso credere che li ho confusi. Mi scuso, ho risolto la domanda. –

+0

* "potrebbe essere perché sto formulando una frase sbagliata" * È più probabile che l'intero approccio sia sbagliato. È più comune per un componente di rendering personalizzato chiedere "Quanto sono grande?". Per qualsiasi altra cosa, i layout dovrebbero gestire il dimensionamento automaticamente, senza l'app. sempre chiedendo dimensioni o dimensioni. –

risposta

5

La dimensione che si ottiene è la dimensione del contenuto e la dimensione del insets. Se si utilizza Jcomponent.getInsets(), è possibile trovare la dimensione del contenuto con sottrazione semplice.

+0

Grazie, ora funziona :) –

2

La tua domanda è confusa: JPanels non ha barre del titolo o bordi di finestre, sono contenitori astratti che sono INSIDE JFrames. JFrames sono gli oggetti con barre del titolo e bordi delle finestre.

JPanel.getSize() dovrebbe funzionare come previsto. Tuttavia, per JFrames ti consigliamo di utilizzare JFrame.getContentPane().getSize(), perché getContentPane() restituisce il JPanel (che è l'area del contenuto reale).

Problemi correlati