Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    5

    Rendere un JPanel grande quanto il suo JFrame

    Salve a tutti, premesso che ho delle conoscenze di awt e di swing di base... vi espongo il mio problema:

    Ho un JPanel, di dimensione 500x350 sul quale effettuo vari disegni, voglio che il JFrame che lo contiene, oltre a contenere la JMenuBar , contenga solo questo JPanel, ma che il JPanel "riempia" la finestra, non lasciando nessuno spazio vuoto, ne tagliandosi.

    Ho provato a creare un JFrame di dimensioni pari al mio JPanel ( per far si che si incastrino perfettamente ) ma ho notato che le dimensioni che imposto al mio JFrame, non sono quelle effettive utilizzabili, ma tutta la zona libera + le cornici della finestra ( di dimensione variabile rispetto al sistema operativo che l'utente usa ) di conseguenza, se imposto JFrame e JPanel di dimensioni uguali, il JPanel risulta tagliato, se volessi farlo rientrare alla perfezione invece, non so che dimensione dare al JFrame.

    Esiste qualche metodo per impostare la grandezza della zona utilizzabile del frame, ossia della pagina vera e propria? Mi spiego: non mi interessa la dimensione della finestra intera, ma solo dello spazio utilizzabile al suo interno.

    Probabilmente è più semplice di quanto possa immaginare, ma proprio non ne vengo a capo :S

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Penso che dipenda tutto dal layout manager che hai utilizzato per il JFrame.
    Prova a guardare questi tutorial dal sito della Sun:
    Layout Manager
    guida visuale ai layout manager

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    5
    Originariamente inviato da Rubox
    Penso che dipenda tutto dal layout manager che hai utilizzato per il JFrame.
    Prova a guardare questi tutorial dal sito della Sun:
    Layout Manager
    guida visuale ai layout manager
    Il problema non sono i layout, in effetti mi sono scordato di dire che la pagina in questione non è ridimensionabile, il mio JPanel si visualizza correttamente , partendo dall'angolo superiore sinistro del JFrame, solo che non sapendo quanto spazio occupano le cornici di un JFrame ( per capirci, la parte con i tasti di chiusura, riduzione a icona etc, + la cornice inferiore), non so di conseguenza quanto dimensionare il JFrame in modo da essere abbastanza grande per non tagliare il contenuto...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da dharlet
    Il problema non sono i layout, in effetti mi sono scordato di dire che la pagina in questione non è ridimensionabile, il mio JPanel si visualizza correttamente , partendo dall'angolo superiore sinistro del JFrame, solo che non sapendo quanto spazio occupano le cornici di un JFrame ( per capirci, la parte con i tasti di chiusura, riduzione a icona etc, + la cornice inferiore), non so di conseguenza quanto dimensionare il JFrame in modo da essere abbastanza grande per non tagliare il contenuto...
    Non vorrei sbagliare, ma se dai al JPanel una dimensione preferita, con setPreferredSize, e poi metti il JPanel in un JFrame, a seconda del Layout di quest'ultimo la dimensione preferita del JPanel verrà mantenuta o no, evitando di dover recuperare dimensioni dei bordi, delle barre del titolo e dei menù, di una barra di stato ecc...
    Ma per una risposta sicura e certa, dovrai aspettare qualcuno di più ferrato in materia.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: Rendere un JPanel grande quanto il suo JFrame

    Originariamente inviato da dharlet
    Ho un JPanel, di dimensione 500x350
    Quale dimensione? Il "preferred size"??

    Originariamente inviato da dharlet
    voglio che il JFrame che lo contiene, oltre a contenere la JMenuBar , contenga solo questo JPanel, ma che il JPanel "riempia" la finestra, non lasciando nessuno spazio vuoto, ne tagliandosi.
    Il content pane di un JFrame ha per default un BorderLayout. Se metti un JPanel nella parte CENTER, la dimensione del pannello dipende dalla dimensione del frame .... non il contrario (cioè non è la dimensione del JFrame che si "adatta" al pannello!). Nella parte CENTER, BorderLayout ignora completamente il "preferred size" del componente.

    Se però vuoi fare in modo che inizialmente il frame venga dimensionato in modo "giusto" da contenere perfettamente il pannello al suo "preferred size", il modo c'è. Basta invocare alla fine (prima del setVisible(true) sul frame) un pack() sul frame.
    Questo fa chiedere al BorderLayout il suo preferred size, che a sua volta è quello del pannello (se è appunto l'unico). E il frame viene dimensionato inizialmente in modo da "adattarsi" al contenuto del content pane.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502

    Re: Re: Rendere un JPanel grande quanto il suo JFrame

    Originariamente inviato da andbin
    Quale dimensione? Il "preferred size"??

    Il content pane di un JFrame ha per default un BorderLayout. Se metti un JPanel nella parte CENTER, la dimensione del pannello dipende dalla dimensione del frame .... non il contrario (cioè non è la dimensione del JFrame che si "adatta" al pannello!). Nella parte CENTER, BorderLayout ignora completamente il "preferred size" del componente.

    Se però vuoi fare in modo che inizialmente il frame venga dimensionato in modo "giusto" da contenere perfettamente il pannello al suo "preferred size", il modo c'è. Basta invocare alla fine (prima del setVisible(true) sul frame) un pack() sul frame.
    Questo fa chiedere al BorderLayout il suo preferred size, che a sua volta è quello del pannello (se è appunto l'unico). E il frame viene dimensionato inizialmente in modo da "adattarsi" al contenuto del content pane.
    Ecco questo m'era sempre sfuggito poiché pack() lo invoco sempre.
    C'è sempre da imparare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.