Come funziona un evento cliccato a un livello basso?

0

Specificamente per quanto riguarda un'operazione di trascinamento della selezione, come fa un pulsante, una casella di testo o qualsiasi cosa sappia che è stato cliccato (o viceversa, in che modo il display manager sa cosa ha fatto clic).

Ho letto alcune informazioni sul modo in cui COM trascina e rilascia e penso di avere un'idea generale: su MouseDown, rileva cosa è stato fatto clic.

Mentre il mouse è ancora inattivo e la posizione del cursore si sposta, una certa quantità memorizza i dati associati alla sorgente di trascinamento.

Quando si attiva l'evento MouseUp, rilascia i dati se il cursore del mouse si trova su una destinazione di rilascio. Se non si tratta di un obiettivo di rilascio, annullare l'operazione.

Puoi espandere questo scenario nello scenario in cui fai clic e trascina per selezionare più file .. in che modo l'interfaccia utente sa quali file ha selezionato?

Il display manager ha un intervallo di pixel calcolato per ogni elemento e confronta i clic di posizione del mouse con quello? In tal caso, come lo sa il display manager?

Se la risposta è troppo lunga o difficile da spiegare qui, puoi indicarmi alcune risorse che potrei leggere? Capisco che tu memorizzi i dati su un evento click del mouse, ma che è un livello più alto "chiama semplicemente queste funzioni API" vista di esso.

    
posta JavaNovice14085 12.08.2014 - 04:44
fonte

1 risposta

4

È specifico del sistema operativo. Su Linux, il server X11 gestisce un albero di X-windows (una gerarchia ad albero di aree rettangolari annidate). Quindi il server X sa quale finestra X è interessata da un clic del mouse.

Se hai accesso a un sistema Linux + Xorg , prova il comando xev .

X11 potrebbe essere sostituito da Wayland in futuro.

Sotto, il programma server X11 gestisce da solo la posizione del mouse (integrando il movimento relativo dato dal dispositivo del mouse) e sa in quale finestra X è il cursore del mouse. Trasmette quel movimento di informazione e suono & cursore entry / exit eventi- per l'applicazione, qui la tua applicazione Java Swing. Vedi anche i protocolli X Window System e amp; architettura & Protocollo X Window Core wikipages.

La tendenza è quella di utilizzare meno X-windows lato server e spostare la maggior parte del rilevamento dell'area sul lato client. Alcuni X11 widget di widget allocano solo una finestra X di livello superiore e gestiscono internamente i widget (ma i vecchi toolkit hanno utilizzato un'area X-window per widget).

Su altri sistemi operativi, suppongo che alcuni layer software ( Aero su Windows o qualche livello software sotto quello) stiano ricevendo eventi di spostamento del mouse e calcolo in cui area rettangolare deve essere visualizzato il cursore del mouse.

    
risposta data 12.08.2014 - 06:36
fonte

Leggi altre domande sui tag