Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    creare programma visualizzazione immagini

    Buonasera a tutti,
    devo creare un'applicazione grafica che consenta di caricare immagini, spostarle con trascinamento per posizionarle a piacere. Da autodidatta ho studiato i codici delle singole funzioni dal sito della Sun, ma ora devo mettere insieme i pezzi di codice.
    Qualcuno può gentilmente aiutarmi?
    Grazie in anticipo!!

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

    Re: creare programma visualizzazione immagini

    Originariamente inviato da giuliocesare80
    devo creare un'applicazione grafica che consenta di caricare immagini, spostarle con trascinamento per posizionarle a piacere. Da autodidatta ho studiato i codici delle singole funzioni dal sito della Sun, ma ora devo mettere insieme i pezzi di codice.
    Qualcuno può gentilmente aiutarmi?
    Per caricare una immagine da file/url ci sono diversi modi, ad esempio tramite il Toolkit di AWT oppure tramite la classe ImageIO. La scelta dipende principalmente dal tipo di immagine che deve essere supportato e dal modo di caricamento (sincrono/asincrono).

    Anche per realizzare un ipotetico "pannello" su cui mettere varie immagini che si devono poter spostare a piacere ci sono diversi approcci.
    Uno relativamente semplice è creare un JPanel che contiene tanti JLabel (che visualizzano non del testo ma un ImageIcon) quante sono le immagini. Gestendo opportunamente dei MouseListener registrati su questi JLabel e facendo dei calcoli sulle coordinate, si può gestire il trascinamento.
    Altro approccio, molto diverso, è quello del custom painting. Nel JPanel non ci sono "componenti" ma tutto viene disegnato nel paintComponent() (in una tua classe che deve estendere JPanel). La tua classe deve anche contenere una apposita struttura dati per tenere traccia delle immagini e delle loro locazioni e anche qui si tratta di gestire un MouseListener (unico, stavolta) per spostare le immagini. Ma va fatto in modo più accurato ... perché non ci sono componenti e la tua classe deve riconoscere i punti "caldi" ovvero solo i punti che cadono nelle aree delle immagini.

    Non ho idea di quanto ti possa essere chiaro di ciò che ho detto. Tra i miei Java Examples (vedi firma) nella sezione AWT/Swing - Graphics c'è un esempio DraggableFigures.java che mostra una immagine ma anche "figure" che si possono spostare. E ho usato il secondo approccio descritto.

    Comunque, consiglio, vai per gradi. Inizia con il capire quali sono i limiti e le potenzialità di uno e dell'altro approccio per spostare le immagini.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Innanzitutto grazie per la risposta..
    Premetto che sono assolutamente alle prime armi e posso facilmente utilizzare termini non adatti mentre scrivo.
    Ho guardato il link che mi hai suggerito, l'idea di fondo è quella, cioè di importare una serie di immagini, caricate da disco attraverso la classe JFileChooser piuttosto che trovarle già nel pannello e alla fine salvarle su un diverso file.
    Devo poi poter scalare, anche non proporzionalmente, le immagini caricate attraverso un sistema interattivo basato sul trascinamento di handle ed eventualemente aggiungere annotazioni (testo in grafica) sull'immagine risultante.
    Grazie di nuovo per la pazienza.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da giuliocesare80
    Devo poi poter scalare, anche non proporzionalmente, le immagini caricate attraverso un sistema interattivo basato sul trascinamento di handle ed eventualemente aggiungere annotazioni (testo in grafica) sull'immagine risultante.
    Hai ammesso di essere alle prime armi ... e nonostante questo, hai descritto una applicazione che non è "grossa" ma è comunque non banale e che richiede una certa dimestichezza con i componenti Swing, la grafica e in generale la programmazione orientata agli oggetti.
    Perlomeno ti sei reso conto della cosa?

    Quindi ripeto il consiglio: vai per gradi. Riesci a fare innanzitutto la gestione di una semplice finestra (JFrame) dove c'è un pulsante o magari meglio il classico menù "File" -> "Apri..." che se azionati fanno aprire la dialog di un JFileChooser per scegliere un qualunque file (che poi sia una immagine ... beh è questione di un filtro)??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Per quanto riguarda la descrizione dell'applicazione ho riportato parte del testo della consegna del progetto che devo fare, omettendo di definirlo come una citazione, non tanto per prenderne il merito, quanto per una maggiore chiarezza nella descrizione.Trattasi di un progettino per un esame universitario.
    Riesco a creare un semplice finestra utilizzando appunto JFrame, ma ancora sto tentando di capire come devo creare il pulsante con i comandi per la selezione dei file.
    Questo è solo uno dei tanti dubbi..intanto continuo a lavorarci seguendo i tuoi consigli
    Grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da giuliocesare80
    Trattasi di un progettino per un esame universitario.
    Ok (l'avevo pensato/intuito che è qualcosa di "didattico" ).

    Originariamente inviato da giuliocesare80
    ma ancora sto tentando di capire come devo creare il pulsante con i comandi per la selezione dei file.
    Ecco, questo è già un primo punto. Quindi hai già scritto del codice? Vuoi provare a postarlo così vediamo se è corretto/appropriato?

    Quale è esattamente il dubbio sulla gestione del pulsante? Dovresti innanzitutto istanziare un JButton, poi aggiungerlo in un "contenitore" (qui dove e come dipende ... è un altro discorso) e poi registrare un ActionListener sul pulsante. Nel metodo actionPerformed() che devi implementare farai la gestione del JFileChooser.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ho letto un manuale consigliato in bibliografia dal docente, anche se, arrivato alla fine, mi trovo immerso in una nebulosa di concetti..molti dei quali non chiari..
    Questo è il codice:

    import javax.swing.*;

    public class Finestra extends JFrame
    {
    public Finestra()// oggetto Finestra
    {
    setTitle("Prima Finestra");// costruttore della superclasse
    setLocation(0, 0);// posiziona la finestra partendo dal vertice alto a sx
    setSize(300,300);// dimensione in pixel della finestra
    setVisible(true);// true permette di visualizzare la finestra

    }


    public static void main(String[] arg)
    {
    new Finestra();

    }
    }



    Non è un gran che..ma con grande soddisfazione funziona!!!!
    Grazie

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da giuliocesare80
    Questo è il codice:
    Ok, comunque ricordati di scrivere il codice ben indentato ma sopratutto, qui sul forum, di postarlo tra i tag CODE.

    Per quanto riguarda la finestra, è già buono. Dovresti però anche invocare setDefaultCloseOperation(.....) per indicare quale è la operazione da fare al close. Per default è HIDE_ON_CLOSE il che vuol dire che se anche chiudi il frame, la applicazione non termina da sola! Invocalo passando ad esempio EXIT_ON_CLOSE, che è il caso tipico: vuol dire che quando chiudi il frame, la applicazione termina.

    Nella finestra non hai messo componenti. Conosci già come usare i layout manager? Sai che JFrame ha un "content pane" che è il contenitore principale dentro cui si mettono normalmente i componenti? Sai che il content pane ha per default un BorderLayout?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ok, comunque ricordati di scrivere il codice ben indentato ma sopratutto, qui sul forum, di postarlo tra i tag CODE.
    Spero di essere riuscito a capire come inserire i codici nel forum..
    ora ho aggiunto questo codice così come mi hai consigliato:
    codice:
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    E' indifferente la posizione in cui metto il codice per far chiudere il frame?
    Ora l'ho messo alla fine dei codici x il dimensionamento e posizionamento del frame



    Nella finestra non hai messo componenti. Conosci già come usare i layout manager? Sai che JFrame ha un "content pane" che è il contenitore principale dentro cui si mettono normalmente i componenti? Sai che il content pane ha per default un BorderLayout?
    Non so ancora come utilizzare i layout manager, conosco solo i vari tipi (FlowLayout, BorderLayout,..etc.) e i vari effetti..ma saperli gestire..è tutta un'altra cosa!!!

    Sto provando ad inserire il bottone..

    Grazie per la pazienza

  10. #10
    Ho fatto qualche piccolo passo in avanti...
    codice:
    import javax.swing.*;
    import java.awt.event.*;
    
    public class FinestraBottone extends JPanel implements ActionListener {
        public JButton load, save;
    
        public FinestraBottone() {
            load = new JButton("Apri");
            load.setToolTipText("Seleziona Immagine");
            load.addActionListener(new LoadButtonListener());
    
            save = new JButton("Salva");
            save.setToolTipText("Salva Immagine");
            this.save.addActionListener(new SaveButtonListener());
    
            add(load);//aggiunge componente al contenitore
            add(save);//aggiunge componente al contenitore
    
        }
    
        private class LoadButtonListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                System.out(0);
            }
            private class SaveButtonListener implements ActionListener {
                public void actionPerformed(ActionEvent e) {
                    System.out(0);
                }
                public static void main(String[] args) {
                    new FinestraBottone();
                    nuovo.setVisible(true);
                }
            }
        }
    Sono riuscito a creare due bottoni e addirittura a mettere la scritta quando passo sul bottone con il mouse!!!!!
    Ho provato a gestire gli eventi, come potrai vedere ho messo:
    System.out(0);
    partendo da un esempio che ho trovato pensando di poter chiudere l'applicazione cliccando su apri e su salva (ovviamente come prova per iniziare a familiarizzare con gli eventi), ma senza troppo successo..infatti non riesco a capire dove intervenire..
    Resto in attesa di qualche altro prezioso consiglio...
    grazie

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.