Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    JLayeredPanel con immagine

    Ciao a tutti,
    vorrei inserire una immagine all'interno di un JLayeredPanel.
    Potete dirmi come posso fare ?
    Grazie

    p.s. l'immagine è presa dal web ed ho già l'URL

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Usa una JLabel.
    JLabel, di default, è in grado di trattare oggetti Icon per la loro visualizzazione.
    Il primo costruttore di JLabel (dopo quello di default), infatti, prevede come parametro proprio un Icon.

    Un oggetto Icon lo puoi ottenere costruendo un ImageIcon, che tra i suoi costruttori ne ha proprio uno che prende un oggetto URL.

    Riassumendo:


    codice:
    // Ho la mia URL
    URL urlImmagine = ...;
    
    // Costruisco un oggetto Icon
    Icon img = new ImageIcon( urlImmagine );
    
    // Costruisco la JLabel
    JLabel miaLabel = new JLabel( img );
    
    // La metto nel JLayeredPane:
    layeredPane.add(miaLabel, posizione);   // Posizione è l'indice del Layer

    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Allora, ho fatto così:
    ho inserito in una parte del JLayeredPanel, un JPanel ed all'interno una JLabel.
    codice:
    URL UrlImmagine = new URL(....);
    BufferedImage Image = ImageIO.read(UrlImmagine);
    mapHolder = new JLabel(new ImageIcon(Image));  
    ....
     framePanel.setLayout(new BorderLayout());
    framePanel.add(mapHolder, BorderLayout.CENTER);
    che ne dite?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Allora, ho fatto così:
    ho inserito in una parte del JLayeredPanel, un JPanel ed all'interno una JLabel.
    codice:
    URL UrlImmagine = new URL(....);
    BufferedImage Image = ImageIO.read(UrlImmagine);
    mapHolder = new JLabel(new ImageIcon(Image));  
    ....
     framePanel.setLayout(new BorderLayout());
    framePanel.add(mapHolder, BorderLayout.CENTER);
    che ne dite?
    Di per sé corretto. Anche se l'uso di JPanel solo per tenere 1 JLabel in CENTER (quindi coprendo tutta l'area di JPanel) è abbastanza superfluo se il JPanel non ha altro. Detto in altro modo: potresti mettere direttamente un JLabel nel JLayeredPane.

    Tieni presente che i componenti che aggiungi nel JLayeredPane (es. il tuo framePanel) vanno posizionati e dimensionati esplicitamente (setLocation+setSize oppure setBounds).
    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
    Jul 2014
    Messaggi
    480
    Ok vedrò considerare una JLabel senza utilizzare il JPanel
    Ultima modifica di roquentin; 16-10-2014 a 22:30

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se il problema è cambiato, si deve aprire una nuova discussione, altrimenti diventa tutto un caos e nessuno riesce più a fruire dei contenuti del forum.

    Ho diviso la discussione: il nuovo problema è trattato in questa.


    Ciao.
    Ultima modifica di LeleFT; 17-10-2014 a 12:58
    "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

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.