Aprire immagine tramite evento

di il
3 risposte

Aprire immagine tramite evento

Ciao a tutti, io avrei un problema.
Sto scrivendo un codice Java dove mi viene visualizzata una finestra iniziale in cui vi sono 3 bottoni.
A parte ho sviluppato delle classi che mi creano delle funzioni (matematiche), me le graficano e mi salvano il suddetto grafico in formato Jpeg.
Ora la mia domanda è: quale comando devo usare per far si che io associ all'evento "MouseClicked" su un determinato bottone l'apertura dell'immagine di un grafico piuttosto che di un altro?
Grazie dell'attenzione

3 Risposte

  • Re: Aprire immagine tramite evento

    nikkim ha scritto:


    Sto scrivendo un codice Java dove mi viene visualizzata una finestra iniziale in cui vi sono 3 bottoni.
    Framework grafico? Swing? O AWT?

    nikkim ha scritto:


    quale comando devo usare per far si che io associ all'evento "MouseClicked" su un determinato bottone
    Sui pulsanti (vale sia per Button di AWT che JButton di Swing) di norma si registra un ActionListener ... non un MouseListener. Quest'ultimo ovviamente sì, è possibile registrarlo ma è più a basso livello e rispecchia meno il concetto di "azione" sul pulsante.
  • Re: Aprire immagine tramite evento

    Il codice è il seguente, hai qualche consiglio su come procedere?


    public class FinestraTasti {


    private Frame finestra;
    private Button FrattaleJulia;
    private Button FrattalleLyapunov;
    private Button Integrale;
    private Button Testo;

    //si crea metodo di inizializzatore
    public FinestraTasti (){
    //maschera prefatta a cascata
    init();
    //vuol dire che all'interno di questa classe c'e un metodo init
    Aggiungibottoni();
    finestra.setVisible(true);
    }

    private void Aggiungibottoni() {

    FrattaleJulia = new Button("Julia");
    FrattalleLyapunov = new Button("Lyapunov");
    Integrale = new Button("Integrale");
    Testo = new Button("Testo");
    Panel pannellobasso = new Panel();
    pannellobasso.add(FrattalleLyapunov);
    pannellobasso.add(FrattaleJulia);
    pannellobasso.add(Testo);
    pannellobasso.add(Integrale);
    finestra.add(pannellobasso, BorderLayout.SOUTH);
    Testo.addMouseListener(new MouseListener(){

    private TextArea area;

    @Override
    public void mouseClicked(MouseEvent e) {
    area = new TextArea("Scrivi qui");
    area.setSize(600,600);
    finestra.add(area, BorderLayout.CENTER);
    }

    @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    }
    );
    FrattaleJulia.addMouseListener(new MouseListener() {

    private Mandelbrot mandelbrot;

    @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseClicked(MouseEvent e) {


    }
    });

    }

    private void init() {

    finestra = new Frame("Frattali e Integrali");
    finestra.setSize(800,800);
    finestra.addWindowListener(

    new WindowListener() {

    public void windowOpened(WindowEvent e) {


    }

    public void windowIconified(WindowEvent e) {


    }


    public void windowDeiconified(WindowEvent e) {


    }


    public void windowDeactivated(WindowEvent e) {


    }

    public void windowClosing(WindowEvent e) {

    System.exit(0);
    //chiusura forzata obbligo costruttore di fare sovrascrittura
    }

    public void windowClosed(WindowEvent e) {

    }


    public void windowActivated(WindowEvent e) {


    }});

    }




    public static void main(String[] args) {

    FinestraTasti p = new FinestraTasti();

    }
    }
  • Re: Aprire immagine tramite evento

    nikkim ha scritto:


    Il codice è il seguente, hai qualche consiglio su come procedere?
    Innanzitutto è AWT ... non Swing. Poi sicuramente, come prima cosa, ActionListener .... non MouseListener (che tra l'altro ti verrebbe anche più semplice/breve).

    Inoltre un'altra cosa lampante che vedo è che a seguito di un evento (mouseClicked) cerchi di aggiungere dinamicamente un nuovo componente in CENTER. Quando cambi un layout dopo che è già visibile, il layout va rivalidato, quindi dopo la aggiunta va fatto un

    finestra.validate();

    Inoltre il area.setSize(600,600); è totalmente inutile. La dimensione della parte CENTER dipende dalla dimensione del frame meno ciò che sta ai bordi ... non da quanto imponi (e sicuramente non con setSize, visto che c'è un layout manager).

    Ah, e tenere la variabile 'area' come campo di istanza della classe anonima che implementa MouseListener è poco utile/sensato .... non puoi usarla al di fuori!
Devi accedere o registrarti per scrivere nel forum
3 risposte