Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    input

    salve a tutti, vorrei sapere come fare per far si che il mio programma arrivato ad un certo punto prima di andare avanti, aspetti l input del mouse, per la precisione devo fare click su due punti diversi dello schermo salvandone le coordinate. idee?? grazie mille a tutti!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    Re: input

    Originariamente inviato da ciccio_84
    salve a tutti, vorrei sapere come fare per far si che il mio programma arrivato ad un certo punto prima di andare avanti, aspetti l input del mouse, per la precisione devo fare click su due punti diversi dello schermo salvandone le coordinate. idee?? grazie mille a tutti!!!
    Stai parlando di applicazioni grafiche voglio sperare...

    Puoi (dovresti) utilizzare MouseListener http://download.oracle.com/javase/6/...eListener.html ed utilizzare in particolare mouseClicked se ti serve il click del mouse, mouseReleased() quando viene rilasciato il bottone del mouse, ecc...

    Per le coordinate, è sufficiente che richiami getX() e getY() dall'oggetto MouseEvent del metodo.

    codice:
    public void mouseReleased(MouseEvent me) {
      x = me.getX();
      y = me.getY();
    }
    Ovviamente, il MouseListener funziona sul componente a cui lo aggiungi.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317

    Moderazione

    Dovresti anche, soprattutto, prendere visione del Regolamento interno, soprattutto per quanto riguarda i titoli delle discussioni.

    Questa l'ho sistemata io.

    Dalle prossime, provvedi tu.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    grazie mille Patrick per la risposta gli eventi del mouse li gestisco come hai detto tu ho fatto l override del metodo mouseClick ora quello che mi serve è una sorta di scanf però per il mouse...non so se ho reso l'idea.
    Grazie Lele per la correzione !

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da ciccio_84 ora quello che mi serve è una sorta di scanf però per il mouse...non so se ho reso l'idea.
    Grazie Lele per la correzione !
    mmm...no, non l'hai resa (almeno non a me xD).

    Se mi spieghi meglio che hai bisogno, vedrò di aiutarti

  6. #6
    allora ti chiedo scusa provo a rispiegarlo: ho una menubar(contenuta in un JPanel) dove c'è un pulsante "disegna linea" quando lo schiaccio l'actionlinstner riconosce l'evento e a questo punto dovrebbe consentirmi di fare due click sul pannello. Il primo click rappresenta il punto dove inizia la linea e il secondo click la sua fine.Adessp io non so come fare per impostare una situazione del genere in java.Il prgramma sostanzialmente deve aspettare che avvengano questi due click per poter disegnare poi la linea sul pannello.grazie in anticipo per la risposta

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ciccio_84
    ho una menubar(contenuta in un JPanel)
    Stai parlando proprio di JMenuBar? Generalmente la si aggancia al JFrame/JDialog con il metodo speciale setJMenuBar. Menù bar/item non si mettono tipicamente in altri normali componenti (anche se tecnicamente non mi pare ci siano implicazioni negative nel farlo).

    Originariamente inviato da ciccio_84
    dove c'è un pulsante "disegna linea" quando lo schiaccio l'actionlinstner riconosce l'evento e a questo punto dovrebbe consentirmi di fare due click sul pannello. Il primo click rappresenta il punto dove inizia la linea e il secondo click la sua fine.Adessp io non so come fare per impostare una situazione del genere in java.
    Devi ragionare in termini di "stato". La interfaccia grafica va "avanti" solo grazie agli eventi. E devi tenerti "memorizzato" da qualche parte a che punto sei e che cosa ti aspetti come prossima azione dell'utente. Potrebbe essere anche solo un banale valore int, es.: 0=l'utente deve cliccare sul pulsante (i click sul pannello non hanno effetto), 1=l'utente ha cliccato sul pulsante e deve cliccare sul pannello per mettere il primo punto, 2=l'utente deve cliccare sul pannello per mettere il secondo punto.

    E se ricevi un click sul pannello E sei in stato 2 allora vuol dire che hai entrambi i punti e disegni la linea, riportando poi alla fine lo stato a 0.

    Insomma: ragiona in termini di "stato" e passaggi da uno stato all'altro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    si andbin ci ho pensato..non so come tradurlo in codice...forse dovrei stoppare il thread corrente con un wait() e poi sul metodo mouseClicked mettere un notify() per riprendere l'esecuzione quando viene cliccato il mouse...ovviamente il tutto deve essere multithreading!!come potrei scrivere un codice cosi?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ciccio_84
    forse dovrei stoppare il thread corrente con un wait()
    In linea di massima no. E se è il EDT (event dispatch thread) assolutamente NO perché andresti a "congelare" temporaneamente tutta la interfaccia utente.

    Originariamente inviato da ciccio_84
    e poi sul metodo mouseClicked mettere un notify() per riprendere l'esecuzione quando viene cliccato il mouse
    No.

    Originariamente inviato da ciccio_84
    ...ovviamente il tutto deve essere multithreading!!
    Qui non centra il "multi-threading"!!

    Tieni una variabile di "istanza" che serve per tenere traccia dello "stato" in cui è il disegno della linea. Ripeto che può essere anche solo un banale valore int.

    Poi:

    Nel actionPerformed del pulsante:
    --- se stato è 0, allora la fase di disegno deve partire. Metti stato a 1, poi potresti anche disabilitare il pulsante (almeno l'utente non fa casino) e basta.

    Nel mouseClicked del pannello:
    --- se stato è 1: accetti il primo punto e te lo memorizzi da qualche parte. Metti stato a 2.
    altrimenti
    --- se stato è 2: accetti il secondo punto e te lo memorizzi da qualche parte, quindi dovresti disegnare la linea. Nota che qui sei nel mouseClicked, fuori dal "contesto" di disegno di un componente Swing che è paintComponent. Pertanto se devi gestire N linee dovresti accumulare i "dati" della linea in una struttura dati e chiedere il repaint() del pannello e poi nel paintComponent disegnare tutte le linee. Quindi rimetti stato a 0 e ri-abiliti il pulsante.
    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.