[Java] Problema con la dimensione di un jframe

accosimo

Nuovo Utente
18 Nov 2013
6
2
0
ciao a tutti, scusate il disturbo e l'inisperienza. sono qui perchè sono giorni che sto cercando di risolvere questo problema ma non ne vengo fuori.

sto cercando di creare un'applicazione dove in un JFrame vengono creati 6 identici JPanel, disposti in matrice 3x2, con all'interno alcuni bottoni ed etichette, una cosa abbastanza semplice insomma. Il problema nasce nel fatto che questa GUI la vorrei poter utilizzare in diversi dispositivi e schermi, e vorrei quindi dimensionare tutti i pannelli all'interno dei JFrame (quindi tutte le varie JLabel e i JButton) in funzione delle dimensioni "sfruttabili" dello schermo di quel preciso dispositivo.

Ho provato ad utilizzare due strade ma nessuna delle due si è rivelata ottima. All'inizio avevo fatto tutto in funzione di screenSize.width e screenSize.height. Mentre per la larghezza ha funzionato, per l'altezza questo metodo mi restituisce tutta l'altezza dello schermo, compresa la "title bar" del JFrame e la barra di Windows, quindi ovviamente non va bene. Poi ho provato con getMaximumWindowBounds() di GraphicsEnvironment che mi restituisce il rettangolo "sfruttabile", quindi tutto lo schermo esclusa la barra di windows: la "title bar" (e poi anche lo spazio occupato dal JMenu, perchè c'è anche quello) però purtroppo continua a rimanere compresa...

cosa mi consigliate di fare? come potrei riuscire a risalire alle dimensioni dello spazio del JFrame che veramente riesco ad utilizzre?
Aggiungo che utilizzo SetExtendedState(JFrame.MAXIMIZED_BOTH) e setResizable(false) che mi setta il frame full screen senza possibilità di ridimensionare...

Vi prego inoltre di dirmi se ho spiegato male il problema e se magari ho dato per scontato qualcosa che invece sarebbe stato importante che scrivessi.
 
  • Like
Reactions: ottofonsuppost

accosimo

Nuovo Utente
18 Nov 2013
6
2
0
Ciao hai provato il grid layout, se imposti i jframe massimizzato i componenti interni si dovrebbero auto adattare

ciao

http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html
Grazie 1000

In effetti non ci avevo pensato all'inizio (non è mia abitudine utilizzare i layout): ora utilizzando il gridLayout che mi posizione alla perfezione i componenti dentro al JFrame e getContentPane().getWidth() getContentPane().getHeight() per prendere le giuste dimensioni della parte del frame realmente utilizzabile, sono riuscito a far funzionare il tutto. Provato sia su schermo 25 pollici sia su 15 pollici sia su 10cpollici e tutto funziona come dovrebbe!

grazie
 
  • Like
Reactions: ottofonsuppost