JavaFX: visualizzare matrice di immagini

di il
2 risposte

JavaFX: visualizzare matrice di immagini

Buon giorno a tutti! Qual'è il modo migliore per visualizzare, su un Pane, una matrice di imageView a partire da un vettore di stringhe contenente i percorsi?

2 Risposte

  • Re: JavaFX: visualizzare matrice di immagini

    Aggiungo alla mia domanda che ho tentato una soluzione (qui sotto), ma non funziona. Dove ho sbagliato?
    public Object[] generaRiga() throws FileNotFoundException {
    		Object[] riga = shuffleArray(immagini);
    		for (int i = 0; i < riga.length; i++) {
    			riga[i] = new ImageView(new Image(new FileInputStream(immagini[i])));
    		}
    		return riga;
    	}
    	public Object[][] generaMatrice() throws FileNotFoundException {
    		ImageView[][] matrice = new ImageView[numeroImmagini][numeroRisposte];
    		for (int i = 0; i < matrice.length; i++) {
    			matrice[i] = (ImageView[]) generaRiga();
    		}
    		GridPane gridPane = new GridPane();
    		for (int i = 0; i < numeroImmagini; i++) {
    			for (int j = 0; j < numeroRisposte; j++) {
    				gridPane.getChildren().add(matrice[i][j]);
    			}
    		}
    		base.getChildren().add(gridPane);
    		return matrice;
    	}
    
    
    	private static Object[] shuffleArray(Object[] ar) {
    		// If running on Java 6 or older, use `new Random()` on RHS here
    		Random rnd = ThreadLocalRandom.current();
    		for (int i = ar.length - 1; i > 0; i--) {
    			int index = rnd.nextInt(i + 1);
    			// Simple swap
    			String a = (String) ar[index];
    			ar[index] = ar[i];
    			ar[i] = a;
    		}
    		return ar;
    	}
  • Re: JavaFX: visualizzare matrice di immagini

    Questo esempio preleva i nomi dei file da una cartella utilizzando un array
    package images_Show;
    
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.awt.List;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    public class Images_Show extends JFrame{
        Image img;
        public Images_Show() throws IOException
            {
            setTitle("Image retrieved");
            setSize(500, 500);
            Container pane = getContentPane();
            JLabel Photo;
            pane.setLayout(new GridLayout(0,4)); // righe,colonne
            String filepath ="F:/Download/B";
    //        String filepath ="F:/Documenti/Immagini";        
            File aDirectory = new File(filepath);
            String[] filesInDir = aDirectory.list();
            for (String file : filesInDir){
                if(file.toLowerCase().endsWith(".jpg")){
                    img = ImageIO.read(new File(filepath+"/"+file));
                    img = img.getScaledInstance(300,200,Image.SCALE_SMOOTH);
                    ImageIcon icon =new ImageIcon(img);
                    Photo = new JLabel(icon) ;                                  
                    pane.add(Photo) ;                
                    this.pack();
                    this.setVisible(true); 
                }
            }
     
        }
            public static void main(String args[]) throws IOException {
                 Images_Show frame = new Images_Show();
                frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
            }
        }
Devi accedere o registrarti per scrivere nel forum
2 risposte