Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] GUI con immagini modificabili a runtime

    Ciao a tutti!
    Avrei bisogno di una mano riguardo un programma che sto "sviluppando".

    Mi spiego: ho una Gui con JFrame e JPanel. Carico delle immagini in alcuni JLabel con il JFileChooser e le inserisco nei JPanel. Fin qui tutto ok.

    Ora arriva il bello: vorrei poter modificare queste immagini a runtime, cioè, vorrei permettere alle immagini di spostarsi nel JPanel per scegliere la loro posizione (senza passare coordinate, ma con l'ausilio del mouse).
    Ultima cosa, vorrei anche poterle scalarle in tempo reale, come si riesce a fare in photoshop o in altri programmi di grafica. E' un'operazione difficile? Ho provato a leggermi la documentazione, ma non saprei proprio che classi usare! Immagino che bisogna gestire gli eventi del mouse, ma non riesco ad andare oltre..

    Le immagini che voglio scalare e spostare nel pannello sono dei png, ma potrei benissimo usare delle gif, l'importante è che gestiscano la trasparenza.. Illuminatemi!

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

    Re: [JAVA] GUI con immagini modificabili a runtime

    Originariamente inviato da frankzac
    vorrei permettere alle immagini di spostarsi nel JPanel per scegliere la loro posizione (senza passare coordinate, ma con l'ausilio del mouse).
    Si può fare e, per dirla in generale, in 2 modi:
    a) Estendi JPanel e ti occupi tu del disegno completo del pannello (compreso quindi il disegno della immagine o altro)
    oppure
    b) Usi JPanel semplicemente come "contenitore" di altri componenti es. un JLabel che visualizza la immagine. Quindi si tratta solo di cambiare la location dei componenti e in tal caso non devi usare un layout manager (devi toglierlo).

    Originariamente inviato da frankzac
    Ultima cosa, vorrei anche poterle scalarle in tempo reale
    Si può fare, se hai un Image, esso ha il metodo getScaledInstance().

    Originariamente inviato da frankzac
    Immagino che bisogna gestire gli eventi del mouse
    Sì e a seconda di una delle due opzioni dette sopra, cambia leggermente (su quale componente applichi il listener per il mouse).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ciao! Anche se in ritardo, volevo ringraziarti per le dritte!

    Alla fine sono riuscito a risolvere il problema dello spostamento delle immagini, però per quanto riguarda il loro scaling ho ancora qualche problema.. getScaledInstance non ha un buon rendering per le immagini, e comunque pensavo di trovare nella documentazione qualche classe che gestisse lo scaling automaticamente, senza sbattermi sulla gestione degli eventi del mouse con le coordinate.. Non esiste una classe così, vero? Va beh, pazienza, mi sa che mi toccherà sudare ancora qualche giorno!

    Grazie comunque!

    Francesco

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da frankzac
    getScaledInstance non ha un buon rendering per le immagini
    Dipende da cosa passi a quel parametro int hints!! Ci sono vari algoritmi, alcuni privilegiano la velocità a discapito della accuratezza ... altri il contrario.

    Originariamente inviato da frankzac
    e comunque pensavo di trovare nella documentazione qualche classe che gestisse lo scaling automaticamente, senza sbattermi sulla gestione degli eventi del mouse con le coordinate..
    Tu hai parlato di JLabel. JLabel innanzitutto non è un componente di "input". Ma a parte questo, tutti i componenti (a parte alcuni particolari es. JSplitPane) che non sono "top-level" (quelli top-level sono es. JFrame o JDialog) non hanno una gestione predefinita per permettere il ridimensionamento tramite mouse/tastiera. La loro dimensione dipende da un layout manager e/o da impostazioni fatte programmaticamente.
    Non è come JFrame che ha un bordino spesso e se ti poni sul bordo con il cursore, esso cambia forma e ti permette di ridimensionare!!!!
    Cioè ... hai capito? Se volessi fare una cosa del genere con un JLabel o altro ... beh, si può fare ... ma è tutto a "tuo" carico. E comunque, anche il ridimensionamento di una immagine su un componente è da fare (a meno che tu trovi qualche componente già fatto) ma in ogni caso non c'è nulla di "standard" o già prefatto nel framework.
    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.