Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ericdraven92 Visualizza il messaggio
    L'ipotesi a) l'avevo presa in considerazione ma non posso avere una matrice sparsa, è tra i requisiti del progetto, quindi se avessi tutte e 2025 cellule avrei una serie di 0 e pochi 1 almeno in fase iniziale. Per evitare questa cosa uso l'HashMap.. Io vorrei estrarre solo quelli in mappa (che magari possono essere 3 in un dato momento).
    Ok ma non confondere la struttura logica con quella fisica/visuale. Se vuoi gestire a livello logico un array "sparso", puoi farlo appunto con una mappa (ti consiglierei ad esempio di fare una classe apposita es. ArraySparso che incapsula questa logica). Ma questo non è detto che c'entri direttamente qualcosa con il modo di presentare visivamente quei dati!

    Se usi GridLayout devi inserire componenti in tutte le celle, non puoi lasciare "buchi". Ricorda che nei "container" (qualunque cosa che è o estende java.awt.Container) i componenti contenuti sono in una banale lista e ci pensa il layout manager a disporli secondo le sue logiche. Ma per il l.m. quello è solo un elenco di componenti, infatti GridLayout lo puoi creare per NxM celle ma poi lui dispone i componenti come se fossero un flusso che va da sinistra-destra (o il contrario) e alto-basso. Ecco perché non puoi avere buchi.

    Quote Originariamente inviata da ericdraven92 Visualizza il messaggio
    Esiste un modo, se ad esempio dispongo 2025 Label con il GridLayout, di modificare la i-esima Label? Dovrei fare per forza un array di Label oppure posso accedere a [3,9] sfruttando il grid?
    GridLayout non fornisce alcunché per "vedere" a livello logico una griglia. Insomma, non ha un metodo del tipo "dammi il componente alla riga y, colonna x". Proprio per i motivi detti prima.

    Questo però non vuol dire nulla (di grave). Vuol solo dire che devi tenerti tu un array bidimensionale dei componenti per poter fare quell'accesso diretto ad un componente alla cella x,y.

    codice:
    public class FrameGioco extends JFrame {
        private JPanel contenitoreGriglia;
        private GridLayout gridLayout;
        private JLabel[][] matriceLabel;
    .......
    }

    Quindi mentre fai il doppio ciclo for per riempire matriceLabel, li aggiungi anche al contenitoreGriglia. Tutto qui. Non vedere/creare problemi dove in effetti non ce ne sono.
    Ultima modifica di andbin; 11-04-2016 a 09:52
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Ti voglio bene!

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.