Visualizzazione dei risultati da 1 a 10 su 25

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    quindi estendo JPanel e creo come variabile d'istanza nella mia classe una JLabel esatto ?
    Grosso modo sì. Però bisognerebbe valutare alcune cose riguardo dimensionamenti e eventuale scrollabilità della immagine.
    Ad esempio: vuoi che la dimensione "preferita" del tuo pannello-riquadro sia la stessa della label (e quindi dipendente dalla icona-immagine inserita)? Questo serve principalmente in base al layout-manager in cui si inserisce il tuo pannello.
    Vuoi che nel tuo pannello ci sia un JScrollPane per poter scrollare la immagine se chi dimensiona il tuo pannello lo rende più piccolo della immagine?

    Quote Originariamente inviata da linux_r Visualizza il messaggio
    Volevo inoltre chiederti posso riusare questa classe tra gli strumenti dell'editor grafico di netbeans?
    Non lo so ... primo perché NetBeans al momento non lo uso e, secondo, perché se anche lo usassi scriverei comunque tutto il codice GUI "a mano", che non ho problemi in tal senso.

    Da una veloce ricerca, vedo che ne parlano ad esempio qui: http://stackoverflow.com/questions/8...ns-gui-builder
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Grosso modo sì. Però bisognerebbe valutare alcune cose riguardo dimensionamenti e eventuale scrollabilità della immagine.
    Ad esempio: vuoi che la dimensione "preferita" del tuo pannello-riquadro sia la stessa della label (e quindi dipendente dalla icona-immagine inserita)? Questo serve principalmente in base al layout-manager in cui si inserisce il tuo pannello.
    Vuoi che nel tuo pannello ci sia un JScrollPane per poter scrollare la immagine se chi dimensiona il tuo pannello lo rende più piccolo della immagine?
    Mi è sufficiente che l'immagine si adatti al pannello , quindi le dimensioni del pannello si dovrebbero adattare poi in base al layout del frame in cui è inserito!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    fatto ! però resta il problema che se ingrandisco il frame l'immagine non si ridimensiona!! come posso fare? ti posto il codice :
    codice:
    
    package jCallRemember.libreria;
    
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    
    /**
     *
     * @author Linux
     */
    public class RiquadroFoto  extends JPanel{
        private JLabel labelFoto;
        private File fileFoto;
      
        public RiquadroFoto() {
            this.labelFoto=new JLabel();
            this.initComponents();
        }
        
        private void initComponents(){
            this.setLayout(new BorderLayout());
            this.add(labelFoto,BorderLayout.CENTER);
            this.setBackground(Color.white);
            
        }
        
        
    
    
        
        public void impostaMouseClick(MouseListener M){
            this.labelFoto.addMouseListener(M);
        }
    
    
        void inserisciFoto(File fileSelezionato) throws IOException {
            this.fileFoto=fileSelezionato;
            Image im=Toolkit.getDefaultToolkit().getImage(this.fileFoto.getCanonicalPath());
            Dimension dim=this.getPreferredSize();
            this.labelFoto.setIcon(new ImageIcon(im.getScaledInstance(dim.width, dim.height, Image.SCALE_SMOOTH)));
        }
        
    
    
        
    }
    codice:
    package jCallRemember.libreria;
    
    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import javax.swing.JFrame;
    
    
    /**
     *
     * @author Linux
     */
    public class FormInsertOperatore extends JFrame{
        private RiquadroFoto riquadro;
        
        public FormInsertOperatore(){
            riquadro=new RiquadroFoto();
        }
        
        public void setup(){
            this.add(riquadro,BorderLayout.CENTER);
            this.riquadro.setPreferredSize(new Dimension(150,150));
            this.pack();
            this.setVisible(true);
            this.riquadro.impostaMouseClick(new ClickRiquadroFoto(this.riquadro));
        }
        
        
    }
    epoi c'è quello del click ma non penso ti interessi !

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    però resta il problema che se ingrandisco il frame l'immagine non si ridimensiona!!
    Credo di aver capito a cosa ti riferisci ma ... preferisco spiegarti bene cosa succede nel tuo codice.

    Hai messo 'riquadro' nella parte CENTER del BorderLayout di JFrame (del content pane, per essere corretti). Poi hai dato una dimensione "preferita" di 150x150 a 'riquadro'. Il pack() utilizza questa dimensione preferita, perché fa in modo che tutti i sotto-componenti siano alla loro dimensione preferita.

    Ma se ridimensioni il frame, la dimensione "fisica" del tuo riquadro dipende direttamente e solo dal frame. Non viene più sfruttata la dimensione preferita (che comunque come valore resta a 150x150).


    Inoltre aggiungo anche un'altra cosa: il getImage() di Toolkit usa un sistema di "cache" delle immagini. A parità di filename/url, restituisce lo stesso oggetto Image già precedentemente fornito. Se l'immagine nel frattempo è cambiata (il file è stato aggiornato), quando richiedi lo stesso filename/url ottieni la vecchia immagine in cache in memoria.
    Ci sono sostanzialmente 2 soluzioni a questo: "flushare" la immagine con il suo flush() oppure usare createImage() di Toolkit, che non usa alcun meccanismo di caching.
    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
    Jan 2014
    Messaggi
    305
    ti ringrazio però resta il fatto che non so come far ridimensionare l'immagine , quando ridimensiono il frame!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    ti ringrazio però resta il fatto che non so come far ridimensionare l'immagine , quando ridimensiono il frame!
    Volendo continuare ad usare un JLabel e un ImageIcon, dovresti registrare su RiquadroFoto un ComponentListener. All'evento componentResized prendi la dimensione "reale", fisica del riquadro (getSize o getWidth+getHeight) e ridimensioni la immagine, crei un nuovo ImageIcon e lo risetti nel JLabel. Chiaramente la immagine originale (così com'era stata caricata) la devi tenere da parte, in un campo di istanza intendo).

    Un'altra soluzione sarebbe il custom painting. Ovvero niente JLabel/ImageIcon. Fai il paint "stretchato" della immagine ogni volta che il RiquadroFoto viene ridisegnato dal framework. Ma potrebbe risultare meno performante.
    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.