Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Griglia adattabile di JPanel

    Salve a tutti.
    Ho un problema e vi chiedo aiuto.
    Ho l'esigenza di costruire una griglia di JPanel.
    Ogni JPanel contiene un numero variabili di componenti che voglio disporre sequenzialmente e qualora non cia sia spazio in orizzontale vorrei inserire tali componenti sotto in una nuova riga.
    Fatto ciò quando inserisco più JPanel nella griglia, uno sotto l'altro, qualora essi non siano visbili vorrei inserire una ScrollBar verticale in modo da poter visionare tutti i JPanel inseriti.
    Ho provato diverse strategi ma nessuna mi soddisfa.
    Ho utilizzato come layout dei JPanel il FlowLayout per disporre i componenti sequenzialemente. Per disporre i vari JPanel uno sotto l'altro ho usato prima un GridLayout e poi un GroupLayout. Nel momento in cui uso un GridLayout i componenti nel JPanel qualora sono molti vengo visualizzati correttamente ma qualora inserisco più JPanel essi si sovrappongono. Se invece utilizzo un GroupLayout i componenti nel JPanel vengono inseriti tutti sequenzialmentee quindi non ho visibilità di quelli che non rientrano nel JPanel.
    Riassumo graficamente, almeno ci provo, quello che intendo creare.

    -------------------JPanel 1
    |1 2 3 4 .... x
    |1 2 3 4 .... y
    ------------------
    -------------------JPanel 2
    |1 2 3 4 .... x
    |1 2 3 4 .... y
    ------------------
    -------------------JPanel N
    |1 2 3 4 .... x
    |1 2 3 4 .... y
    ------------------
    più la scroll bar verticale per visionare tutti i JPanel.

    Ovviamente preciso che non conosco il numero di componenti (rappresentati dai numeri) da inserire in un singolo JPanel.
    Chiedo gentilemnte se qualcuno è disponibile a darmi delle indicazioni.
    Grazie.
    A presto
    il vero sapiente è colui che sà di non sapere e non colui che crede di sapere... SOCRATE

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

    Re: Griglia adattabile di JPanel

    Originariamente inviato da ingra1983
    Ogni JPanel contiene un numero variabili di componenti che voglio disporre sequenzialmente e qualora non cia sia spazio in orizzontale vorrei inserire tali componenti sotto in una nuova riga.
    Questo dà l'indicazione per l'uso di un FlowLayout.

    Originariamente inviato da ingra1983
    Fatto ciò quando inserisco più JPanel nella griglia, uno sotto l'altro
    Questo dà l'indicazione per mettere i pannelli dentro 1 JPanel X con un BoxLayout verticale (o eventualmente un GridLayout ... ma darebbe la stessa dimensione a tutti).

    Originariamente inviato da ingra1983
    qualora essi non siano visbili vorrei inserire una ScrollBar verticale in modo da poter visionare tutti i JPanel inseriti.
    Allora quel JPanel X detto prima messo come "view" di un JScrollPane. Il JScrollPane poi va dentro un altro contenitore (es. content pane di un JFrame).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re andbin

    Ciao grazie mille per il suggerimento.
    Però ti volevo dire che se metto ogni JPanel in JScrollPane gli elementi che inserisco nel pannello verrano visualizzati su una sola linea in quato posso scorrerli orizzontalmente con lo scrollo. Io non volevo questo. Vorrei che i componenti nel pannello X fossero disposti su più righe se necessario e quindi con un FlowLayout come mi hai suggerito tu va bene. Ma se inserisco poi questo pannello in uno JScrollPane perdo come dicevo questo effetto, e questo succede anche se inserisco ogni pannello in un contenitore con BoxLayout e questo contenitore poi ad un JScrollPane.
    Va bè grazie comunque sei stato gentilissimo.
    il vero sapiente è colui che sà di non sapere e non colui che crede di sapere... SOCRATE

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

    Re: Re andbin

    Originariamente inviato da ingra1983
    se metto ogni JPanel in JScrollPane gli elementi che inserisco nel pannello verrano visualizzati su una sola linea
    Sì ... vero. Mi stavo dimenticando io di una cosa ... sono problemi abbastanza "subdoli" per cui bisogna conoscere molto bene i criteri dei vari layout manager.
    Il "preferred size" di un FlowLayout è quella dimensione che fa stare tutti i componenti in 1 unica "riga" orizzontale.
    Ora, se un JPanel con FlowLayout lo metti dentro un altro contenitore con un layout manager che rispetta il "preferred size" dei componenti (perlomeno il height ... la altezza), ecco il problema.
    Dovrei pensarci un attimo e magari fare qualche prova. Perché con un FlowLayout le cose diventano critiche. Tutto l' "inscatolamento" dei componenti/contenitori deve essere tale da far sì che non venga chiesto al FlowLayout il suo preferred size.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ciao,
    che ne dici se creassi un layout manager personalizzato che estende FlowLayout.
    Potrebbe essere una buona soluzione o il problema persiste?
    Cerco di tirare giù qualche cosa e ti faccio sapere.
    Grazie ancora.
    il vero sapiente è colui che sà di non sapere e non colui che crede di sapere... SOCRATE

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