Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    13

    Array di immagini

    Chiedo scusa per il messaggio precedente ma l'ho scritto di fretta.
    Il mio problema sarebbe quello di disegnare le immagini contenute in un array di immagini di 6 elementi. Ogni elemento sarebbe una delle 6 facce di un dado.

    codice:
    import javax.swing.*;
    import java.awt.*;
    
    public class BackgroundPanel extends JPanel
    {
    private Image im1;
    private Image[] d;
    
    public BackgroundPanel()
     {
         //aggiungo immagine
    	 Toolkit t= Toolkit.getDefaultToolkit();
    	 im1 = t.getImage("tavolo.jpg");
    	 d = new Image[6];
    	 d[0] = t.getImage("dice.jpg");
    	 d[1] = t.getImage("dice2.png");
    	 d[2] = t.getImage("dice3.png");
    	 d[3] = t.getImage("dice4.png");
    	 d[4] = t.getImage("dice5.png");
    	 d[5] = t.getImage("dice6.png");
    	 
    	
    	 MediaTracker m1= new MediaTracker(this);
    	 m1.addImage(im1, 1);
    	 m1.addImage(d[0], 2);
    	 m1.addImage(d[1], 3);
    	 m1.addImage(d[2], 4);
    	 m1.addImage(d[3], 5);
    	 m1.addImage(d[4], 6);
    	 m1.addImage(d[5], 7);
    	 
    	 try
    	 {
    		 m1.waitForAll();
    	 }
    	 catch (InterruptedException e)
    	 {
    	 } 
     }
    
    public void paintComponent (Graphics g)
      {
    	super.paintComponent(g);
    	int x,y;
    	x=100;
    	y=210;
    	g.drawImage(im1, 0, 0,null);
    	g.drawImage(d[0], x, y,null);
    	g.drawImage(d[0], 2*x, y,null);
    	g.drawImage(d[0], 3*x, y,null);
    	g.drawImage(d[0], 4*x, y,null);
    	g.drawImage(d[0], 5*x, y,null);
      }
    }
    Il compilatore non da errori ma non visualizza le immagini contenute nell'array d. L'altra immagine (im1), al contrario, viene visualizzata correttamente.

  2. #2
    se non ricordo male, il PNG non è un formato accettato da Java
    gli unici che si possono usare sono GIF e JPG

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    13
    Ho risolto. Il problema é che non si può creare un array di immagini di tipi differenti. Il formato non é importante ma devono essere tutte uguali, non possono essere alcune .jpg e altre .png

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

    Re: Array di immagini

    Originariamente inviato da cozza.89
    Il compilatore non da errori ma non visualizza le immagini contenute nell'array d. L'altra immagine (im1), al contrario, viene visualizzata correttamente.
    Il toolkit accetta e gestisce tranquillamente immagini PNG (lo dice la documentazione javadoc).

    Usare getImage("tavolo.jpg") significa che il path è relativo alla directory "corrente". Quindi è "sensibile" a come/da dove avvii la applicazione. Ma se dici che che tavolo.jpg la carica, allora ammesso che le altre siano nella stessa directory, dovrebbe pure caricarle.

    E nota che puoi anche evitare l'attesa del caricamento se per il disegno fai g.drawImage(....., this) che fa sì che il tuo JPanel faccia da "observer" e si aggiorni man mano che la immagine si carica.
    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
    Apr 2010
    Messaggi
    13
    Ho risolto. Il problema é che non si può creare un array di immagini di tipi differenti. Il formato non é importante ma devono essere tutte uguali, non possono essere alcune .jpg e altre .png

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cozza.89
    Il problema é che non si può creare un array di immagini di tipi differenti.
    Questo è assolutamente falso. L'array è di tipo java.awt.Image e qualunque oggetto che è un sottotipo di Image è perfettamente e legalmente assegnabile ad un elemento dell'array.
    (così come ad esempio in un array di Object[] ci puoi mettere oggetti di qualunque tipo, anche diversi!)

    Originariamente inviato da cozza.89
    Il formato non é importante ma devono essere tutte uguali, non possono essere alcune .jpg e altre .png
    Potrebbe essere un limite/problema di MediaTracker (e ripeto, l'array non centra, anche perché MediaTracker non "sa" nulla del tuo array, invochi addImage per ogni immagine).
    Però mi sembrerebbe abbastanza strano e non mi pare di aver mai letto/sentito di questo limite. Dovrei andare a spulciare nella documentazione.

    Comunque se fosse appunto un limite di MediaTracker non sarebbe un grosso problema, basta usare MediaTracker distinti oppure se ti va bene un aggiornamento "graduale" man mano che carica, semplicemente non usi MediaTracker e passi il pannello come "observer".
    Tutto qui.

    Se per caso trovi scritto da qualche parte di questo limite/problema, fammi sapere, che mi pare curioso.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.