Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    148

    cambiare sfondo applicazione java

    vorrei cambiare lo sfondo della mia applicazione tramite il click di un bottone senza riavviarla.come posso fare?

    ecco il codice:
    codice:
    public class Finestra extends JFrame implements MouseListener {
        private int x, y;
        private JLabel la = new JLabel("clicca sullo schermo!", JLabel.CENTER);
        private boolean tray=true;
        public Finestra() {
            try {
            Robot robot = new Robot();
            
    
            robot.delay(2000);
    //la seguente stringa carica lo sfondo
            BufferedImage image = robot.createScreenCapture(new rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
            setSize(Toolkit.getDefaultToolkit().getScreenSize());
            JLabel label = new JLabel(new ImageIcon(image));
            
            setTitle("Programma");
            setLocation(0,0);
            
            add(la);
            add(label);
    
            addMouseListener(this);
            setVisible(tray);
            }
    catch (AWTException exception){}
        }
    
    
    
    
        
        public void mousePressed(MouseEvent e) {
            x = e.getX();
            y = e.getY();
            la.setText("x = " + x + " y = " + y);
            tray=false;
            
        }
    
        public void mouseReleased(MouseEvent e) { }
        public void mouseEntered(MouseEvent e) { }
        public void mouseExited(MouseEvent e) { }
        public void mouseClicked(MouseEvent e) { }
    
        public static void main(String[] args) {
            new Finestra();
        }
    }

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

    Re: cambiare sfondo applicazione java

    Originariamente inviato da killerbomb
    vorrei cambiare lo sfondo della mia applicazione tramite il click di un bottone senza riavviarla.come posso fare?
    Sullo sfondo ti avevo già risposto qui. Non avevi nemmeno risposto ....
    Ora ... cosa non ti è chiaro nel fatto di estendere ad esempio JPanel, disegnare qualunque sfondo tu voglia nel paintComponent() e poi aggiungere normalmente nel JPanel tutti i componenti che vuoi???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    148

    Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da andbin
    Sullo sfondo ti avevo già risposto qui. Non avevi nemmeno risposto ....
    Ora ... cosa non ti è chiaro nel fatto di estendere ad esempio JPanel, disegnare qualunque sfondo tu voglia nel paintComponent() e poi aggiungere normalmente nel JPanel tutti i componenti che vuoi???
    ma il problema non è questo! il problema è ke voglio ke il programma crei una stampa dello schermo e la metta come sfondo all'applicazione ogni volta che clicco un apposito bottone...puoi aiutarmi?

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

    Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da killerbomb
    ma il problema non è questo! il problema è ke voglio ke il programma crei una stampa dello schermo e la metta come sfondo all'applicazione ogni volta che clicco un apposito bottone...puoi aiutarmi?
    Puoi dare una occhiata tra i miei Java Examples, sezione Graphics, in particolare l'esempio TiledBackground.java??
    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
    Nov 2008
    Messaggi
    148

    Re: Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da andbin
    Puoi dare una occhiata tra i miei Java Examples, sezione Graphics, in particolare l'esempio TiledBackground.java??
    puoi postarmi il link?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da killerbomb
    puoi postarmi il link?
    Guarda la sua firma...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    148

    Re: Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da andbin
    Puoi dare una occhiata tra i miei Java Examples, sezione Graphics, in particolare l'esempio TiledBackground.java??
    esiste un comando per ricaricare il contenuto di una finestra(non la finestra)?

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

    Re: Re: Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da killerbomb
    esiste un comando per ricaricare il contenuto di una finestra(non la finestra)?
    Scusa ma .... che cosa intendi???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    148

    Re: Re: Re: Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da andbin
    Scusa ma .... che cosa intendi???
    intendo un comando tipo il repaint() per le applet

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

    Re: Re: Re: Re: Re: Re: Re: cambiare sfondo applicazione java

    Originariamente inviato da killerbomb
    intendo un comando tipo il repaint() per le applet
    repaint() come metodo ..... esiste!! Per tutti i componenti che derivano da java.awt.Component.
    E con questo?? repaint() serve per fare una richiesta di ridisegno "asincrono", generalmente/tipicamente a seguito di un cambiamento di "stato" interno al componente.

    Se hai un JLabel pippo e fai pippo.setText("qualcosa"), dentro setText() vengono fatte delle verifiche per determinare se il testo è davvero diverso dal precedente (quindi da aggiornare) e se è così, ad un certo punto viene invocato proprio repaint().
    Ma lo fa il componente, intendo la richiesta di repaint() .... non lo devi fare tu.

    Lo ripeto ancora una volta (poi basta ... generalmente aiuto ben volentieri ... ma fino ad un certo punto): vuoi disegnare qualcosa come sfondo che stia sotto i vari componenti??? L'approccio più semplice e pulito è avere un "contenitore" dove si fanno le seguenti cose: 1) si fa l'override del metodo di painting in cui si disegna "qualcosa" (es. il tuo sfondo) e 2) essendo appunto un "contenitore" lo si usa per contenere altri componenti o a sua volta altri contenitori usando un qualche layout manager.
    Tipicamente in Swing come contenitore si usa JPanel, in quanto è un contenitore "generico" di uso generale. Si fa l'override di paintComponent() e lì dentro si disegna "qualcosa". E dentro il JPanel si aggiungono ovviamente altri componenti.

    Se hai un java.applet.Applet potresti fare lo stesso, perché Applet è un contenitore semplice, in pratica un java.awt.Panel. Fai l'override di paint() (non paintComponent() ... qui siamo in AWT) e disegni qualcosa. La tua applet ovviamente può contenere altri componenti!!
    Se fosse javax.swing.JApplet no, non ti conviene perché JApplet è più complesso (come JFrame e JDialog ha un "content pane" ecc....) e in tal caso è meglio usare JPanel.

    Non per sembrarti rompiscatole ma .... hai guardato il mio esempio che ho citato?? Funziona proprio con un JPanel. Ho definito una classe che estende JPanel. Nel paintComponent() ho disegnato la immagine (nel mio esempio è ripetuta nelle due direzioni ... ma questo cambia poco). Poi nella mia classe ho reso disponibile per l'esterno un metodo setBackgroundImage() che riceve un Image.
    Ho un oggetto TiledBackgroundPanel e voglio cambiare la immagine di sfondo?? Creo un nuovo Image (in qualunque modo ... nel mio esempio lo caricavo con ImageIO da una "risorsa") e poi invoco questo metodo setBackgroundImage(): aggiorna lo stato (il campo interno) e chiede repaint(). E lo sfondo .... si aggiorna!!!
    Tutto qui. Semplice, pulito, logico, minimale.
    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.