Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Matrice di immagini

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    10

    Matrice di immagini

    Ciao a tutti!

    sto lavorando al gioco memory, quello dove devi trovare le coppie di carte uguali. Il problema nel quale vado incontro è che non riesco a disporre le immagini del retro delle carte in una matrice 4 x 4 come in figura. Qualche consiglio?? Ho provato con una matrice, ma mi compare il frame senza immagini.



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

    Re: Matrice di immagini

    Originariamente inviato da Torre89
    non riesco a disporre le immagini del retro delle carte in una matrice 4 x 4 come in figura. Qualche consiglio??
    Sì, un contenitore che ha un GridLayout di 4x4 celle, ognuna che contiene un JLabel che visualizza un Icon (nel tuo caso è un ImageIcon).
    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
    Nov 2009
    Messaggi
    10
    scusa l'ignoranza, ma non riusciresti a farmi un piccolo esempio di codice? grazie mille cmq per il consiglio!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    10
    Questo è quello che ho scritto sinora, a parte la funzione paint che devo sistemare ancora...può andare??? però mi da problemi la funzione add del JPanel...

    codice:
    package memory;
    
    import java.awt.*;
    import javax.swing.*;
    import java.awt.Image;
    import javax.swing.JPanel;
    /**
     *
     * @author Nicolò
     */
    public class Frame extends JFrame {
        
        public Image image[];
        private Container container;
        private GridLayout grid;
        private JPanel card[];
    
        public Frame(){
    
            Dimension screenSize =
            Toolkit.getDefaultToolkit().getScreenSize();
            setSize(screenSize.width,screenSize.height);
            setVisible(true);
    
            container = getContentPane();
            grid = new GridLayout(4, 4);
            container.setLayout(grid);
    
            for(int i = 0; i < 16; i++)
                card[i] = new JPanel();
    
            Toolkit tk = Toolkit.getDefaultToolkit();
    
            for (int i = 0; i < 16; i++)
                image[i] = tk.getImage("C:/Users/Nicolò/Pictures/carta_retro.jpg");
    
    
            MediaTracker m = new MediaTracker(this);
    
            for (int i = 0; i < 16; i++)
                 m.addImage(image[i], i+1);
    
    
            try{m.waitForAll();}
            catch(InterruptedException e){}
    
            for (int i = 0; i < 16; i++)
                Pane(card[i],image[i]);
    
        }
    
       public void Pane (JPanel pan, Image imag){
           pan.add(imag);
        }
    
        @Override
        public void paint (Graphics g){
    
            super.paint(g);
            
            int p = 50;
            int h = 50;
            for (int i = 0; i < 4; i++)
                    g.drawImage(image[i],p,h,null);
                    }
    }

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Quando si posta del codice, si devono usare i tag CODE, come espressamente richiesto nel Regolamento Interno, punto 6.

    Sistemo io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Torre89
    Questo è quello che ho scritto sinora, a parte la funzione paint che devo sistemare ancora...può andare???
    No mi spiace, non va per niente.
    Innanzitutto JFrame è un componente con una struttura complessa, contiene un JRootPane il quale contiene altri componenti tra cui il ben noto "content pane" che è dove si aggiungono i component. E quindi non è appropriato fare l'override di paint() per disegnare qualcosa sul frame.
    E poi comunque ti avevo suggerito di usare dei JLabel che visualizzano dei ImageIcon.

    Quindi ripeto: un "contenitore" (un tuo apposito JPanel, giusto per comodità/personalizzazione, o anche direttamente il content pane del JFrame) che ha un GridLayout 4x4 in cui inserisci 16 JLabel che visualizzano dei ImageIcon. Che puoi cambiare usando setIcon(Icon).

    Questo a livello di componenti. A livello di "design" delle classi sarebbe meglio "incapsulare" il più possibile le cose e la gestione. Ma qui si tratta di avere ben chiaro come sfruttare la OOP. E non è una cosa che possono spiegarti così su 2 piedi .....
    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
    Nov 2009
    Messaggi
    10
    Scusate per la questione del codice...mi era sfuggita la cosa! E grazie ancora anche a te andbin..ora ho capito meglio il java non mi fa impazzire..ma purtroppo devo darlo come esame quindi devo fare sto gioco

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.