Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100

    [java]immagini e bottoni

    salve, devo realizzare una piccola applicazione che usa la gui.

    praticamente devo caricare un immagine di partenza, l'utente clicca su quest'immagine, si apre un JFileChooser, seleziona una nuova immagine, preme ok, e questa nuova immagine prende il posto di quella vecchia...come si fa?

    ho provato a impostare l'immagine come imageicon e caricarla all'interno di una jlabel o jbutton...ma quando clicco e si apre jfilechooser per scegliere il nuovo file, tale nuova immagine non riesco a farla "sovrascrivere" alla precedente

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

    Re: [java]immagini e bottoni

    Originariamente inviato da antony85
    ma quando clicco e si apre jfilechooser per scegliere il nuovo file, tale nuova immagine non riesco a farla "sovrascrivere" alla precedente
    Crei un nuovo ImageIcon dal file selezionato e assegni l'icon al componente (metodo setIcon).
    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
    Jul 2006
    Messaggi
    100
    funziona, l'immagina va al posto giusto,ma devo comunque creare un nuovo imageicon, quando invece avrei voluto che la stessa imageicon associata al bottone, cambiasse(senza che il bottone debba far riferimento ad un altra imageicon)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    ho risolto cosi(non so se sia la soluzione giusta)

    ImageIcon ii = new ImageIcon("C:/a.jpg");

    JButton b = new JButton(ii);

    JOptionPane.showMessageDialog(null, "ora cambia l'img");

    ii=new ImageIcon("C:/b.jpg");

    b.setIcon(ii);



    oppure anche tramite l'uso di classi anonime...ovvero :

    JButton b = new JButton(new ImageIcon("C:/a.jpg");

    b.seticon(new ImageIcon("C:/b.jpg"));

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    ok...diciamo che va bene con l'utilizzo delle classi anonime

    ora...prox domanda...quando carico un immagine, ad esempio 800x600, e lo spazio che ho a disposizione è soltando 300x300 nell'ambito del jframe, come posso "dire" a java che faccia un ridimensionamento automatico e non il croppaggio automatico di default?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da antony85
    funziona, l'immagina va al posto giusto,ma devo comunque creare un nuovo imageicon, quando invece avrei voluto che la stessa imageicon associata al bottone, cambiasse(senza che il bottone debba far riferimento ad un altra imageicon)
    Tecnicamente ImageIcon è "mutabile" nel senso che ha un setImage(Image) per settare una nuova immagine.
    Se però si cambia solo il Image interno al ImageIcon, di per sé nessuno lo "sa" che è cambiato (nemmeno il pulsante che fa riferimento al ImageIcon). Il pulsante può aggiornarsi e disegnare il nuovo Image incapsulato nel ImageIcon se avviene un repaint del componente (causato esplicitamente da programma o dall'utente, es. ha cliccato o anche solo passato con il mouse sopra).

    Quindi:
    1) O riusi lo stesso oggetto ImageIcon cambiando solo l'Image interno ma devi anche assicurarti che il componente venga aggiornato. Basterebbe di per sé un repaint() sul componente.
    2) O istanzi un nuovo oggetto ImageIcon (che non vedo quali problemi o dubbi ti possa dare) e lo assegni al componente.

    Delle due è più "pulita" la seconda.

    Originariamente inviato da antony85
    come posso "dire" a java che faccia un ridimensionamento automatico e non il croppaggio automatico di default?
    Non viene fatto alcun ridimensionamento in automatico. Lo puoi fare tu se vuoi. Altrimenti puoi fare in modo che la immagine si possa "scrollare" se metti il componente dentro un JScrollPane (mettere un pulsante in un JScrollPane mi sembra un pochino una "cozza" però .... sarebbe meglio un JLabel).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    non vorrei usare le scrollbar, mi interesserebbe che l'immagine, di qualunque size essa sia, venga ridimensionata alla zona...senza che venga stretchata ovviamente...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da antony85
    mi interesserebbe che l'immagine, di qualunque size essa sia, venga ridimensionata alla zona...senza che venga stretchata ovviamente...
    Image ha un metodo getScaledInstance per ottenere una versione ridimensionata. Determinare le nuove dimensioni e fare in modo che venga mantenuto l'aspect-ratio ... è a tuo carico.
    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
    Jul 2006
    Messaggi
    100
    aglia, per quanto riguarda il ridimensiomanento manuale la vedo dura

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da antony85
    per quanto riguarda il ridimensiomanento manuale la vedo dura
    Scusa ma che cosa intendi per ridimensionamento "manuale"??
    Cioè .... in base a cosa vuoi calcolare le nuove dimensioni? Che la immagine sia di una dimensione che (mantendo l'aspect-ratio) stia dentro un "box" di certe dimensioni che stabilisci tu (anche fisse a priori)? O che sia proporzionale a qualcos'altro?
    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.