Visualizzazione dei risultati da 1 a 9 su 9

Discussione: KeyListener su Console

  1. #1

    KeyListener su Console

    Ragazzi il mio programma gira in console, ma ho bisogno che quando premo dei tasti faccia determinate cose. Avete presente che quando premete la freccia verso l'alto, della testiera, mentre siete in console vi riscrive il comando precedente?? ecco mi serve fare quella roba li nel mio programma, ma me serve solo che mi diciato come intercettare un tasto su CONSOLE, e sottolineo SU CONSOLE, xk in rete trovo tutte info per frame label text etc.

    Thx!

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

    Re: KeyListener su Console

    Originariamente inviato da MyLamer88
    Ragazzi il mio programma gira in console, ma ho bisogno che quando premo dei tasti faccia determinate cose. Avete presente che quando premete la freccia verso l'alto, della testiera, mentre siete in console vi riscrive il comando precedente?? ecco mi serve fare quella roba li nel mio programma, ma me serve solo che mi diciato come intercettare un tasto su CONSOLE, e sottolineo SU CONSOLE, xk in rete trovo tutte info per frame label text etc.
    No, purtroppo in Java "puro" (con le sole classi del framework di Java SE) non puoi fare nulla del genere. Non esiste un "KeyListener" per la console e inoltre con i metodi di lettura di InputStream (System.in) oppure di java.io.Console (Java 6+) non puoi gestire tasti o combinazioni di tasti particolari (frecce, Fx ecc....).
    La gestione dello standard input è ad alto livello e bufferizzata.

    Dovresti cercare una libreria esterna che, sfruttando presumibilmente JNI, utilizza delle funzionalità di I/O a basso livello specifiche del S.O. per la gestione della console.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    non posso crederci...ma che schifezza dai...
    grazie cmq..

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da MyLamer88
    non posso crederci...ma che schifezza dai...
    Schifezza??? Java non ha come unico e principale obiettivo la realizzazione di applicazioni "console". Inoltre per quanto riguarda le funzionalità particolari come i colori, il posizionamento arbitrario del cursore o il charset utilizzato per i caratteri, la gestione della console è molto dipendente dal sistema operativo e quindi profondamente diversa da un sistema all'altro. Il fatto che il framework di Java SE non sia andato ad "impelagarsi" nei meandri di tutti i dettagli relativi alle console, dal mio punto di vista è solo un bene.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    non c'è bisogno k te la prendi cosi..
    per me un linguaggio ben fatto deve avere possibilita di fare determinate cose, ed il fatto k mi mettono il keylistner sui form e nn sulla console x me è una schifezza...punti di vista.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da MyLamer88
    non c'è bisogno k te la prendi cosi..
    E chi se la prende??? Mica io .... ti ho solo spiegato, credo molto bene, come stanno le questioni con le console.

    Originariamente inviato da MyLamer88
    per me un linguaggio ben fatto deve avere possibilita di fare determinate cose, ed il fatto k mi mettono il keylistner sui form e nn sulla console x me è una schifezza...punti di vista.
    C'è una questione concettuale che probabilmente non ti è molto chiara.

    Le interfacce utente AWT/Swing sono interfacce gestite ad "eventi". Vuol dire che non è il programmatore che stabilisce e decide quando avvengono le cose (quando avviene l'input, quando si deve disegnare su un componente, ecc...). In quest'ottica quindi i "listener" sono appropriati e "logici". Quando avviene qualcosa (es. un click, ecc...) allora si riceve una notifica e si fa qualcos'altro.

    Una console non è gestita ad "eventi" ... anzi è tutto "sincrono". È il programmatore che decide esattamente in ogni momento quando fare output (es. System.out.println (...) ) e quando richiedere l'input (es. scanner.nextLine() ). Quindi in uno scenario come questo semplicemente i listener .... sono inutili.

    E come ripeto non me la sto prendendo ... ti sto solo spiegando la questione dal punto di vista tecnico e concettuale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    1-Innanzitutto, direi k non è il caso di insunuare che "non mi è molto chiaro" qualcosa, spiegandomi il semplice concetto di Asincronicità che conosco ormai da quando ero bambino. Io non so con chi sto parlando, cosa fai nella vita o comunque che livello hai nell'ambiente programmativo, allo stesso modo tu non sai il mio, e nemmeno debbo dirtelo, ti dico solo però (a mio parere) di non sottovalutare un qualcuno che fa una domanda che a te puo sembrare scema, o k fa un commento k non ti garba, perchè potrebbe saperne molto piu di te, o potrebbe avere una reputazione programmativa piu alta della tua, ripeto non sto aprendo una discussione tra me e te, ma solo un concetto di cui spero farai bagaglio.

    2-Non mi sembra cosi assurda la questione di gestire eventi asincroni in una console, basti pensare appunto alla console di windows, alla console di linux e mac, che gestiscono eventi ascincroni, come per l'appunto quando spingi la freccia in alto ti scrive il comando precedente. Ecco, siccome queste cose, se esistono vuol dire k sono programmabili a basso livello, è inutile sprecare fiato per dire k sono inutili in un linguaggio ad alto livello come il java, anzi, a mio parere sono una grossa perdita, xk ad esempio a me adesso sarebbe servito in una maniera spropositata gestire questa situazione, e come me molta altra gente. Quindi ti ripeto, punti di vista, ma nn prendiamo la cosa oggettivamente, xk non lo è.

    Saluti.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da MyLamer88
    come per l'appunto quando spingi la freccia in alto ti scrive il comando precedente.
    E questo cosa centra esattamente con l'asincronicità e con gli eventi???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da MyLamer88
    1-Innanzitutto, direi k non è il caso di insunuare che "non mi è molto chiaro" qualcosa, spiegandomi il semplice concetto di Asincronicità che conosco ormai da quando ero bambino. Io non so con chi sto parlando, cosa fai nella vita o comunque che livello hai nell'ambiente programmativo, allo stesso modo tu non sai il mio, e nemmeno debbo dirtelo, ti dico solo però (a mio parere) di non sottovalutare un qualcuno che fa una domanda che a te puo sembrare scema, o k fa un commento k non ti garba, perchè potrebbe saperne molto piu di te, o potrebbe avere una reputazione programmativa piu alta della tua, ripeto non sto aprendo una discussione tra me e te, ma solo un concetto di cui spero farai bagaglio.

    2-Non mi sembra cosi assurda la questione di gestire eventi asincroni in una console, basti pensare appunto alla console di windows, alla console di linux e mac, che gestiscono eventi ascincroni, come per l'appunto quando spingi la freccia in alto ti scrive il comando precedente. Ecco, siccome queste cose, se esistono vuol dire k sono programmabili a basso livello, è inutile sprecare fiato per dire k sono inutili in un linguaggio ad alto livello come il java, anzi, a mio parere sono una grossa perdita, xk ad esempio a me adesso sarebbe servito in una maniera spropositata gestire questa situazione, e come me molta altra gente. Quindi ti ripeto, punti di vista, ma nn prendiamo la cosa oggettivamente, xk non lo è.

    Saluti.
    Evidentemente le tue conoscenze hanno troppe lacune (vedi prima risposta: ma che schifezza dai).

    Se non riesci a capire la differenza fra "schifezza" (come la chiami tu) e "portabilità" l'unica cosa che ti rimane da fare è approfondire l'argomento.

    Per la questione del "non so con chi sto parlando", basta guardare un attimino la firma...

    Per quanto possiamo saperne noi sul tuo conto: una persona che mette le K al posto del CH fa supporre (a buona ragione) che l'utente in questione non abbia più di 20 anni (sbagliamo?)
    Se poi aggiungiamo che la prima opinione dopo una risposta concreta e ben posta è stata (ma che schifezza)... per non parlare poi delle obiezioni: le consolle di Windows, Linux e Mac gestiscono l'asincronicità: giusto, anzi, giustissimo. Quello che ti stava dicendo andbin è che ognuna le gestisce in modo diverso e di conseguenza dipendente dal sistema. Ma se questo concetto ancora non l'hai capito...
    Aggiungiamo che qui "basso livello" e "alto livello" non hanno nulla a che vedere con il concetto di portabilità del compilato e arriviamo ad una conclusione: non sei informato.

    Chiudo per evitare il flame.


    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

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.