Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Gestire più eventi contemporaneamente

    Salve.
    Allora, io vorrei poter gestire due eventi distinti contemporaneamente ma non ho mai fatto nulla del genere e non so proprio da che parte girarmi o che cosa cercare. In pratica, la pressioni dei tasti SU/GIU' e W/S fa muovere su o giù due disegni (semplicemente li ridisegno con coordinate diverse). E funzionare funzionano, però non riesco a muovere i due disegni contemporaneamente: se per esempio sto alzando il primo con SU e contemporaneamente premo W per alzare il secondo, il primo mi si blocca.
    Devo usare i thread per fare ciò che voglio?

    Grazie.

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

    Re: Gestire più eventi contemporaneamente

    Originariamente inviato da Kaamos
    io vorrei poter gestire due eventi distinti contemporaneamente
    Quando si parla di "eventi" in AWT/Swing il "contemporaneamente" non esiste. Gli eventi vengono "dispacciati" nel contesto del EDT (event dispatch thread). Il EDT è uno solo ..... quindi materialmente gli eventi sono gestiti in sequenza 1 per volta. Punto.

    Originariamente inviato da Kaamos
    se per esempio sto alzando il primo con SU e contemporaneamente premo W per alzare il secondo, il primo mi si blocca.
    Semplicemente perché è così che il sistema gestisce le notifiche relative ai tasti e, perlomeno limitandosi a Java "puro", comunque non puoi fare nulla per cambiare questa cosa.

    Originariamente inviato da Kaamos
    Devo usare i thread per fare ciò che voglio?
    No.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Originariamente inviato da Kaamos
    Salve.
    Allora, io vorrei poter gestire due eventi distinti contemporaneamente ma non ho mai fatto nulla del genere e non so proprio da che parte girarmi o che cosa cercare. In pratica, la pressioni dei tasti SU/GIU' e W/S fa muovere su o giù due disegni (semplicemente li ridisegno con coordinate diverse). E funzionare funzionano, però non riesco a muovere i due disegni contemporaneamente: se per esempio sto alzando il primo con SU e contemporaneamente premo W per alzare il secondo, il primo mi si blocca.
    E' normale e il motivo lo ha già spiegato "andbin"


    Devo usare i thread per fare ciò che voglio?
    Le SWING non essendo thread-safe sono gestite secondo la regola del single thread:
    "Once a Swing component has been realized, all code that might affect or depend on the state of that component should be executed in the event-dispatching thread."

    Volendo puoi usarli, creare,gestire un componente e metterti in ascolto degli eventi su un secondo thread.. ma le swing hanno un comportamento particolare con i multithread...non sono cosi esperto da porterti dare una soluzione netta al tuo problema, ma dire il vero bisognerebbe leggersi la documentazione SUN per capire esattamente come si può (provare ad) operare per gestire un eventuale lavoro in background.

    http://java.sun.com/products/jfc/tsc.../threads1.html

    http://java.sun.com/products/jfc/tsc.../threads2.html

    nel secondo articolo spiega come usare la classe SwingWorker, io personalmente non l'ho mai usata quindi non aggiungo nulla... forse ma ripeto FORSE potrebbe servirti se vuoi eseguire operazioni in background senza ricorrere ai thread.

    spero possa servire saluti.

    RM

  4. #4
    L'ultima frase che ho detto è una bestemmia in quanto la SwingWorker gira su un Thread...

    però a differenza della classe Thread normale la SW dovrebbe essere supportata sulle GUI SWING. Non mi chiedere dettagli più tecnici sulla SW

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Ah, quindi con il solo Java è impossibile fare le due cose contemporaneamente se ho ben capito, e i Thread non servirebbero... e se c'è una soluzione con SwingWorker, comunque non ho le conoscenze per usare sta roba...
    Grazie delle risposte esaustive.

  6. #6
    Originariamente inviato da Kaamos
    Ah, quindi con il solo Java è impossibile fare le due cose contemporaneamente se ho ben capito, e i Thread non servirebbero...
    ALT! Frena frena... Il discorso del "single thread" riguarda le SWING per via dell' EDT come diceva prima "andbin"... il Java di suo può gestire quello che vuoi in parallelo!!

    e se c'è una soluzione con SwingWorker, comunque non ho le conoscenze per usare sta roba...
    Grazie delle risposte esaustive.
    Prego, il fatto è che non le ho nemmeno io.. e magari ci sono anche altre soluzioni che non conosco..
    ti posso dare un consiglio se vuoi: se conosci le basi del java e delle SWING puoi leggerti comunque la documentazione e dovresti capirla senza troppi problemi...poi dopo averla letta puoi vedere se puoi ricavarci qualcosa di utile.. ma ripeto è solo un consiglio..

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da rikytheblack
    ALT! Frena frena... Il discorso del "single thread" riguarda le SWING per via dell' EDT come diceva prima "andbin"... il Java di suo può gestire quello che vuoi in parallelo!!



    Prego, il fatto è che non le ho nemmeno io.. e magari ci sono anche altre soluzioni che non conosco..
    ti posso dare un consiglio se vuoi: se conosci le basi del java e delle SWING puoi leggerti comunque la documentazione e dovresti capirla senza troppi problemi...poi dopo averla letta puoi vedere se puoi ricavarci qualcosa di utile.. ma ripeto è solo un consiglio..
    Si si, avevo capito che ti riferivi a Swing. Bene, se ricavo qualcosa dalla documentazione tornerò qui.

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.