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

    Tastiera Virtuale - focus su text input

    Ciao a tutti,
    sono newbissimo di Java e sto lavorando ad una tastiera onscreen destinata a sistemi linux.
    Utilizzando Robot riesco a scrivere nelle textbox di altre applicazioni, ma per fare questo utilizzo Timer per posticipare la scrittura e poi rimetto manualmente il focus nel campo di testo prescelto.
    Ovviamente è una soluzione che adotto a titolo di test.
    Vorrei avere qualche dritta per:
    1) Scrivere in una text box senza in tempo reale, magari senza fargli perdere il focus oppure restituendoglielo dopo la pressione di ogni tasto (ho xdotool a disposizione)
    2) Riconoscere quando in un browser o altra app (dove possibile) viene dato il focus ad un campo di testo.

    Ciao e grazie

    Marcello.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Malto Cortese Visualizza il messaggio
    ma per fare questo utilizzo Timer per posticipare la scrittura e poi rimetto manualmente il focus nel campo di testo prescelto.
    C'è un modo semplice per evitare tutto questo: fare in modo che la finestra che contiene la tastiera "virtuale" NON possa ricevere il focus (nonostante possa tranquillamente ricevere gli eventi del mouse per premere i pulsanti) in modo che non "rubi" il focus ad un'altra applicazione.

    Avevo realizzato un esempio, è su Google Code (non l'ho ancora portato sui miei nuovi Java Examples su GitHub ... per pigrizia ...):
    https://java-examples-by-andbin.goog...les/index.html

    Vedi Virtual Keypad, in particolare VirtualKeypadFrame.java
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ciao andbin,
    ho dato un'occhiata agli esempi che mi hai postato... FUNZIONA ALLA GRANDE !!!
    Grazie mille per il tuo aiuto

    Marcello

  4. #4
    Ora devo capire come riconoscere se il sistema (linux e/o win) fa il dispatch di un evento quando una text box di un qualsiasi programma prende il focus, in modo da richiamare la tastiera.
    Magari potrei potrei intervenire con un demone in C e fare un hook con la mi app in java

    Ciao

    Marcello

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Malto Cortese Visualizza il messaggio
    Ora devo capire come riconoscere se il sistema (linux e/o win) fa il dispatch di un evento quando una text box di un qualsiasi programma prende il focus, in modo da richiamare la tastiera.
    Cioè quando l'utente dà il focus ad una qualunque textbox nel sistema o altra applicazione, tu vuoi aprire/mostrare la tua tastiera virtuale?
    Questo è altamente più critico e difficile. E ti spiego anche con un caso (nemmeno tanto) particolare: se fosse un'altra applicazione Java, magari usa Swing come interfaccia grafica. I componenti Swing sono disegnati e gestiti da codice Java e NON "esistono" per il sistema.
    Quindi (correggetemi se sbaglio) non c'è una API nativa che ti permetta di sapere dell'esistenza di una textbox Swing, né quindi che le è stato dato il focus. E anche riferito a componenti "nativi" del sistema, il focus può essere dato anche a pulsanti, listbox, ecc...

    La cosa più semplice/banale è tenere la finestra della tua tastiera come "always-on-top". A certe condizioni (minimo: che la funzionalità sia supportata), vedi l'uso e la documentazione di setAlwaysOnTop di java.awt.Window.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Ciao andbin,
    grazie mille per la risposta !!!
    Si, il mio intento è di farla aprire in stile mobile, tuttavia potrei lasciarla a scomparsa e tenere un elemento visibile per richiamarla.
    E' un utility per sistemi touch screen, ma vorrei dargli delle caratteristiche particolari, per questo mi sono proposto di svilupparla ex-novo. Penso che java da questo punto di vista sia la soluzione giusta, vista anche la sua natura crossplatform.

    A presto

    Marcello

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.