Visualizzazione dei risultati da 1 a 10 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    Problema dimensione JFrame di una GUI

    Ciao a tutti,
    ho costruito una applicazione in java tramite netbeans.
    Questo software consiste in un JFrame principale ni cui sono contenuti vari elementi (JTable, JButton, ...).
    Il problema nasce nel fatto che questa GUI la vorrei poter utilizzare su diversi 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.

    Cosa mi consigliate di fare? Come potrei riuscire a risalire alle dimensioni dello spazio del JFrame che veramente riesco ad utilizzre?

    Grazi a tutti

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    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.

    Cosa mi consigliate di fare?
    Per il layout dei componenti è stato usato il posizionamento "assoluto"? O uno o più layout manager? (e se sì, quale/i?)

    Per queste cose, cioè per rendere flessibile/adattabile il layout si usano i layout manager.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ok, solo per un JPanel interno ho utilizzato BorderLayout. Tutti gli altri sono Free Design compreso il JFrame principale.
    Inoltre:
    codice:
    ....
    public PVE() throws Exception {
            initComponents();
            this.setLocationRelativeTo(null);
    ....
    ...
    Quindi il JFrame principale è centrato.

    Cosa posso fare ?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Cosa posso fare ?
    Dovresti:
    a) comprendere bene i layout manager, perlomeno tutti quelli basilari. Dimentica SpringLayout/GroupLayout che sono tra quelli più complessi. Questi due vengono usati tipicamente dagli editor visuali di GUI ma sono parecchio difficili e "contorti" da usare a mano (basta che guardi un codice per la GUI generato da un IDE come es. NetBeans ...).

    b) scrivere tutto il codice per la creazione/composizione della interfaccia grafica "a mano" sfruttando i layout manager.

    c) sfruttare i principi della OOP (design pattern compresi). In Swing la principale "abilità" del programmatore sta solo nel saper "inscatolare" componenti dentro contenitori, dentro contenitori ecc.... separando bene le cose e sfruttando appunto la OOP. In tutto questo un editor visuale non solo non ti aiuta ma probabilmente ti mette pure i bastoni tra le ruote.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Dovresti:
    a) comprendere bene i layout manager, perlomeno tutti quelli basilari. Dimentica SpringLayout/GroupLayout che sono tra quelli più complessi. Questi due vengono usati tipicamente dagli editor visuali di GUI ma sono parecchio difficili e "contorti" da usare a mano (basta che guardi un codice per la GUI generato da un IDE come es. NetBeans ...).
    Vorrei che la GUI fosse centrata su qualsiasi dimensione di schermo di sistemi desktop.
    Non voglio che sia resizable ( e questo l'ho già impostato nel JFrame principale ).
    Voglio semplicemente che si adatti alla dimensione dello schermo di un qualsiasi sistema desktop su cui viene utilizzata.

    p.s. Ho letto di un metodo getScreenSize() ma non so come utilizzarlo (in particolare se considerarlo solo per il JFrame principale o per tutti i componenti)

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Vorrei che la GUI fosse centrata su qualsiasi dimensione di schermo di sistemi desktop.
    Non voglio che sia resizable ( e questo l'ho già impostato nel JFrame principale ).
    Ok, avevo capito male io (le mie indicazioni comunque sono valide in generale). A te basta che la finestra sia "centrata" sullo schermo (i componenti contenuti non c'entrano nulla).

    Basta invocare sul frame

    setLocationRelativeTo(null)

    Che centra automaticamente la finestra. Questo va fatto dopo che le dimensioni fisiche del frame sono diventate note (generalmente dopo un setSize() o un pack() ).

    L'altra strada, con es. getScreenSize() è possibile ma il concetto di dimensione (e centro) dello schermo è più complicato di quello che pensi se si considerano i sistemi multi-monitor.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ok, avevo capito male io (le mie indicazioni comunque sono valide in generale). A te basta che la finestra sia "centrata" sullo schermo (i componenti contenuti non c'entrano nulla).

    Basta invocare sul frame

    setLocationRelativeTo(null)

    Che centra automaticamente la finestra. Questo va fatto dopo che le dimensioni fisiche del frame sono diventate note (generalmente dopo un setSize() o un pack() ).

    L'altra strada, con es. getScreenSize() è possibile ma il concetto di dimensione (e centro) dello schermo è più complicato di quello che pensi se si considerano i sistemi multi-monitor.
    Allora, per il JFrame principale, ho già fatto:
    codice:
    public PVE() throws Exception {
            initComponents();
            this.setLocationRelativeTo(null);
    ...
    Ho provato il software sia su desktop PC che su notebook, i quali hanno dimensione di schermo differente ma entrambi con SO windows 7 e la GUI è centrata e proporzionata allo schermo.

    Ho fatto un'altra prova su un notebook con differente dimensione di schermo e con SO windows xp e la GUI va oltre le dimensioni dello schermo....

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ho emulato windows 8 e mi sono accorto che la gui viene visualizzata bene.
    Dipende essenzialmente dalla risoluzione a questo punto.
    Ho impostato la dimensione del top level container con maximumsize = 1326 e minimumsize = 774. Queste dimensioni mi indicano la risoluzione massima , giusto?
    Come posso indicare all'utente che se la risoluzione è inferiore a (xxx) X (xxx) potrebbe non essere disponibile spazio sufficiente per la visualizzazione e che il software è per determinati SO ?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Ho impostato la dimensione del top level container con maximumsize = 1326 e minimumsize = 774. Queste dimensioni mi indicano la risoluzione massima , giusto?
    Con maximumsize/minimumsize intendi dire l'uso di setMinimumSize/setMaximumSize ?
    Questi generalmente si usano solo su componenti in un layout manager che rispetta il preferred e/o minimum e/o maximum size. Di norma, tipicamente, non si usano con JFrame/JDialog.

    Per quanto ne so, setMinimumSize su un JFrame ha effetto, insomma è rispettato mentre il setMaximumSize no.


    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Come posso indicare all'utente che se la risoluzione è inferiore a (xxx) X (xxx) potrebbe non essere disponibile spazio sufficiente per la visualizzazione e che il software è per determinati SO ?
    A livello documentativo? (allora come vuoi, con delle note di requisiti/installazione). O al limite un installer potrebbe testare la risoluzione e avvertire l'utente (o non proseguire nel setup).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.