Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1

    Lavorare con immagini con Swing

    Ciao a tutti,

    sto cercando di capire come lavorare conle immagini in Java ma lo sto trovando complesso da capire. Tutti gli esempi che ho visto in giro si rifanno ad un paintComponent. Ma facendo così applico un immagine predefinita alla creazione dell'oggetto, non capisco come rendere la cosa dinamica, tipo alla chiusura di un file open dialog....

    spero di essere stato abbastanza chiaro...

    grazie e tutti

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nmontec Visualizza il messaggio
    sto cercando di capire come lavorare conle immagini in Java ma lo sto trovando complesso da capire. Tutti gli esempi che ho visto in giro si rifanno ad un paintComponent. Ma facendo così applico un immagine predefinita alla creazione dell'oggetto, non capisco come rendere la cosa dinamica, tipo alla chiusura di un file open dialog....

    spero di essere stato abbastanza chiaro...
    No, purtroppo non è molto chiaro quale è il tuo problema o dubbio esatto. Un conto è il caricamento di una immagine da file/stream/risorsa nei formati standard es. gif/jpeg/png, un altro conto è usare una immagine come "icona" nei componenti che gestiscono degli Icon (principalmente menù, pulsanti, label), un altro conto ancora è sfruttare il custom painting per disegnare immagini o qualunque altra cosa (linee, figure ecc...) sulla superficie di un componente custom (appunto il paintComponent in Swing) e un altro conto ulteriore è la creazione e/o manipolazione di immagini.
    Quindi su quali di questi aspetti sono i tuoi dubbi?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    No, purtroppo non è molto chiaro quale è il tuo problema o dubbio esatto. Un conto è il caricamento di una immagine da file/stream/risorsa nei formati standard es. gif/jpeg/png, un altro conto è usare una immagine come "icona" nei componenti che gestiscono degli Icon (principalmente menù, pulsanti, label), un altro conto ancora è sfruttare il custom painting per disegnare immagini o qualunque altra cosa (linee, figure ecc...) sulla superficie di un componente custom (appunto il paintComponent in Swing) e un altro conto ulteriore è la creazione e/o manipolazione di immagini.
    Quindi su quali di questi aspetti sono i tuoi dubbi?
    Apparentemente su nessuno dei tre, nel senso che io ho creato un'immagine in un Raster e non capisco come fare a visualizzarla in un JPanel, ed anche a cambiare immagine alla bisogna (tipo il classico comando File->Open)

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nmontec Visualizza il messaggio
    Apparentemente su nessuno dei tre
    Io ne ho detti 4 di aspetti.

    Quote Originariamente inviata da nmontec Visualizza il messaggio
    nel senso che io ho creato un'immagine in un Raster
    Che intendi con "raster"? Nel senso generale di "immagine raster" che consiste in una griglia di pixel (concetto contrapposto alle immagini "vettoriali")?
    O intendi proprio java.awt.image.Raster? Un Raster è solo la rappresentazione di un'area rettangolare di pixel e che contiene un DataBuffer con i pixel in un determinato formato. Raster è solo una struttura dati interna, non è una immagine come intesa dal framework.
    Le immagini in Java (perlomeno in Java SE) sono rappresentate da java.awt.Image e sotto-tipi.

    Quote Originariamente inviata da nmontec Visualizza il messaggio
    e non capisco come fare a visualizzarla in un JPanel
    Se vuoi solo far vedere una immagine, il modo più semplice è:
    - creare un ImageIcon, direttamente (da file/URL) o da un Image già esistente.
    - assegnare il ImageIcon ad un JLabel.
    - inserire JLabel in un contenitore: il content pane di JFrame, un JPanel specifico, ecc....

    Non servirebbe di certo il custom painting solo per questo.

    Quote Originariamente inviata da nmontec Visualizza il messaggio
    ed anche a cambiare immagine alla bisogna (tipo il classico comando File->Open)
    Questo è appunto il primo aspetto che dicevo "il caricamento di una immagine da file/stream/risorsa nei formati standard es. gif/jpeg/png".
    Se usi JFileChooser (da un classico menù File->Apri) per far scegliere un file immagine, JFileChooser ti fornisce solo il pathname del file e basta, non "apre" o carica un bel niente.
    Come usare il pathname spetta a te. Se è una immagine, allora può essere caricata tramite diverse API del framework per ottenere un Image o BufferedImage (a seconda della classe/metodo usato).
    C'è il toolkit di AWT (java.awt.Toolkit), c'è la API ImageIO (javax.imageio.ImageIO) e c'è javax.swing.ImageIcon che è la principale implementazione di Icon.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Intendo proprio la classe Raster in quanto creo immagini a partire da matrici e poi le devo visualizzare.inoltre ho bisogno di modificare l'immagine e quindi ho bisogno anche che l'operazione di visualizzazione sul jpanel sia pure veloce

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nmontec Visualizza il messaggio
    Intendo proprio la classe Raster in quanto creo immagini a partire da matrici
    Quel Raster non dovrebbe neanche interessarti, visto che il suo uso è una cosa abbastanza "avanzata".
    E ti ho anche ampiamente detto che in Java SE una immagine è solo rappresentata da java.awt.Image e sotto-tipi. Hai guardato BufferedImage?

    Quote Originariamente inviata da nmontec Visualizza il messaggio
    e poi le devo visualizzare.inoltre ho bisogno di modificare l'immagine e quindi ho bisogno anche che l'operazione di visualizzazione sul jpanel sia pure veloce
    La visualizzazione di un (Buffered)Image a livello "basilare" è banale l'ho detta prima: (Buffered)Image -> ImageIcon -> JLabel.
    Ma se devi modificare frequentemente la immagine e rivisualizzarla oppure addirittura è l'utente che deve poter "disegnare" tramite tastiera/mouse sulla immagine, allora no, conviene usare il custom painting. E riguardo ottimizzazioni, performance e quant'altro, sono tutte cose che dovrai comprendere man mano che acquisisci i concetti sul painting in Swing. Non sono cose che posso spiegarti in poche righe!

    Cerca di vedere i vari aspetti singolarmente e in modo progressivo. Mi sembra che stai facendo un po' un miscuglio ...
    Se hai dubbi più precisi, chiedi pure, magari preferibilmente in discussioni separate.
    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.