Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Layout swing

  1. #1
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310

    Layout swing

    Salve,

    ho pannello a cui imposto un BoxLaout.Y_AXIS al cui interno ci sono altri pannelli nei quali imposto il titolo, vorrei fare la dimensione dei pannelli sottostanti uguali, ma senza un gridLayout non riesco a farlo, c'è un modo per poter ottenere un risultato come quello riportato in questo link senza utilizzare il GriLayout?
    https://docs.oracle.com/javase/tutor...ts/border.html

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    344
    Che io sappia la maggior parte dei LayoutManager calcola la "dimensione preferita" di ogni Container prendendo lo spazio necessario per visualizzare tutti i componenti all'interno (più eventuali bordi, spazi vuoti inseriti programmaticamente etc.).
    Quindi se i tuoi pannelli hanno all'interno componenti diversi, in generale non avranno dimensioni uguali.

    Il GridLayout è un'eccezione da questo punto di vista, e può essere comodo in molte situazioni, tuttavia a volte non può essere usato direttamente (o può ma con risutalti piuttosto bruttini da vedere) perché questa sua caratteristica provoca un allungamento/allargamento dei componenti di dimensioni minori che vengono per così dire "tirati".
    In molti casi si può risolvere innestando il componente all'interno di un altro contenitore (un pannello va benissimo) che ne mantenga la dimensione/allineamento (e quant'altro) desiderati.

    Si può anche evitare l'uso di un GridLayout, ma la soluzione alternativa che mi viene in mente, ovvero di settare manualmente le dimensioni, andrebbe quasi sempre evitata.

    Ci sono motivi particolari per i quali vuoi evitare di usare un GridLayout, oltre a quello che magari ho già detto? Se hai modo di fornire un immagine o descrizione dettagliata di come vorresti fosse il risultato finale si possono pensare diverse soluzioni, ti dico già che la mia conoscenza di layout si ferma a BorderLayout, GridLayout, CardLayout, FlowLayout, GridBagLayout e BoxLayout, ho sentito nominare anche il GroupLayout e il MigLayout (ma che io sappia difficilmente vengono usati da chi scrive codice "a mano"), poi esisteranno sicuramente layout più complessi e magari "potenti", ma io comincerei con i più semplici se fossi in te
    Ultima modifica di Ansharja; 06-10-2017 a 17:36

  3. #3
    Quote Originariamente inviata da cerza Visualizza il messaggio
    vorrei fare la dimensione dei pannelli sottostanti uguali, ma senza un gridLayout non riesco a farlo
    Premessa: BoxLayout rispetta anche il "maximum size" dei componenti contenuti. I JPanel hanno per default un maximum size molto elevato (32767 x 32767). Quindi se un componente (JPanel) Z ha un BoxLayout e ci metti dentro solo dei pannelli, allora dovrebbe succedere che i pannelli si "spartiscono" equamente lo spazio di Z nella direzione del BoxLayout (es. in verticale se Y_AXIS) e occupano la massima dimensione nell'altro senso (es. orizzontale se Y_AXIS).
    Ultima modifica di andbin; 06-10-2017 a 17:58
    Andrea, www.andbin.net – Senior Java developer – SCJP 5 (91%) – SCWCD 5 (94%)
    Il mio blog sulla programmazione

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