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 2014
    Messaggi
    178

    esercizio applicazione grafica

    Salve,

    devo svolgere questo esercizio:

    Realizzare un’applicazione grafica basata sullalibreria SWING che:
    a. visualizzi il frame qui a lato;

    b. consenta di scegliere con un click del mouse uncolore nello spazio delimitato dalla cornice“Colori”;

    c. per effetto del click, il rettangolo nel frame devecolorarsi di conseguenza.I colori della paletta sono: nero, blu, giallo, rosso, verde,rosa, bianco e arancione (non è importante mantenere lostesso ordine).


    Vorrei sapere quei quadrati come li devo fare ? devo utilizzare i JPanel e colorare lo sfondo ? e poi per quanto riguarda l'evento del clic posso farlo con ActionListener ?
    qui.jpg
    Grazie
    Ultima modifica di Bombonera; 04-06-2015 a 14:58

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    Vorrei sapere quei quadrati come li devo fare ? devo utilizzare i JPanel e colorare lo sfondo ?
    Non esiste un solo modo per fare quei rettangoli colorati. Giusto alcuni scenari che mi vengono in mente:

    - un JPanel opaco con il background colorato. Qui serve un MouseListener (mouseClicked() )
    - un JLabel o un JButton che visualizza un Icon colorato (la implementazione di un Icon colorato è da fare, non c'è predefinita). Con JButton puoi usare ActionListener mentre con JLabel di nuovo MouseListener.
    - un componente custom (estensione di JPanel o JComponent) che disegna direttamente il colore sul componente.

    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    e poi per quanto riguarda l'evento del clic posso farlo con ActionListener ?
    No, ActionListener funziona principalmente con pulsanti (e combobox per la selezione). Con JPanel/JLabel non hai una gestione di ActionListener.
    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 2014
    Messaggi
    178
    ok grazie

    mi da errore non so perché

    codice:
    panel.addMouseListener( new MouseListener(){
            	public void mouseClicked(MouseEvent e){
            		frame.setTitle("prova");
            	}
            });
    il compilatore mi segna l'errore su MouseListener()

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    mi da errore non so perché
    MouseListener ha 5 metodi. Se implementi direttamente la interfaccia, li devi implementare tutti. Se estendi MouseAdapter hai facoltà invece di ridefinire solo quelli che ti servono (e in tal caso usa anche la annotazione @Override )
    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
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da andbin Visualizza il messaggio
    MouseListener ha 5 metodi. Se implementi direttamente la interfaccia, li devi implementare tutti. Se estendi MouseAdapter hai facoltà invece di ridefinire solo quelli che ti servono (e in tal caso usa anche la annotazione @Override )
    Ok grazie mille :-)

    Ultima cosa

    siccome ogni quadrato ha un colore diverso come si deve gestire la classe che implementa MouseListener() ??

    non credo che si deve creare una classe per ogni quadrato. Non so se sono stato chiaro.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    siccome ogni quadrato ha un colore diverso come si deve gestire la classe che implementa MouseListener() ??

    non credo che si deve creare una classe per ogni quadrato.
    Se pensavi di fare tanti addMouseListener, ciascuno con la sua anonymous inner class .... no. Sarebbe oltretutto troppo lungo.

    Basta solo una implementazione del listener. Il "source" dell'evento (ovvero il tuo pannello) te lo fornisce il MouseEvent e poi bisogna solo vedere cosa devi farci.
    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 2014
    Messaggi
    178
    Non ho afferrato bene il concetto

    praticamente creo la classe


    import java.awt.event.MouseListener;


    import com.sun.glass.events.MouseEvent;


    public class CustomMouseListener implements MouseListener{




    @Override
    public void mouseClicked(java.awt.event.MouseEvent e) {
    System.out.println("Prova");

    }


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

    }


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

    }


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

    }


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

    }
    }
    ho implementato il metodo mouseClicked(). Quando l'utente clicca sul panel il compilatore stampa il messaggio: "prova". Mettiamo che io creo un'altro panel e lo chiamo panel2 e gli voglio far fare un'azione diversa, ad esempio stampa la frase: "hai premuto sul secondo pannello". come devo fare ?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    ho implementato il metodo mouseClicked(). Quando l'utente clicca sul panel il compilatore stampa il messaggio: "prova". Mettiamo che io creo un'altro panel e lo chiamo panel2 e gli voglio far fare un'azione diversa, ad esempio stampa la frase: "hai premuto sul secondo pannello". come devo fare ?
    La questione è un po' più ampia ... cerco di darti una breve spiegazione. Il punto è stabilire innanzitutto che cosa devi fare e con quali dati.

    Scenario: hai N pannelli, ciascuno ha un background (colore, get/setBackground) differente. Su ognuno di essi registri la stessa implementazione di MouseListener. Se a te nel mouseClicked serve solo sapere quel colore di background, allora è banale: il "source" (come Object) dell'evento te lo dà il MouseEvent. Tu sai che è uno dei JPanel, fai un cast a JPanel e prendi il background. Stop (poi cosa ci fai con il colore è un altro discorso).

    Se devi fare un'altra logica ... è da valutare. Ti è più chiaro?
    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 2014
    Messaggi
    178
    mi puoi fare un esempio ?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Se volessi il background del pannello su cui hai cliccato:

    codice:
    public void mouseClicked(MouseEvent e) {
        JPanel pannello = (JPanel) e.getSource();
        Color colore = pannello.getBackground();
    
    ....
    }
    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.