[Java] Tastatur einlesen... ohne textfield

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von tobi, 21. Februar 2011 .

  1. 21. Februar 2011
    Tastatur einlesen... ohne textfield

    Hey Leute!

    Ich habe ein kleines Anliegen... versuche mich jetzt schon den ganzen Tag daran und finde nichts passendes bei google...

    Ich möchte über Java ein Programm schreiben, welches über einen USB RFID Reader die ID ausliest.

    So der Reader sendet nach auflegen einer ID Card die Karten ID als "Tastaturbefehl"...
    Jetzt möchte ich in einem Java Prog mit dieser ID arbeiten...
    Klar kann ich Tastatureingaben einlesen usw... aber das besondere daran ist, dass die ID nicht z.B. über den Reader in ein angezeigtes Texfield eingelesen wird...
    Versteht ihr was ich meine?

    Geht das Einlesen der Tastatur im "Hintergrund" ohne ein Textfield zu sehen?


    Würde mich über eure Hilfe freuen

    MfG
     
  2. 21. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Entweder via Key Listner (hierzu muss deine Form fokussiert sein). Oder wenn dein Programm wirklich im Hintergrund arbeitet via Global Key Hook
     
  3. 21. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Es reicht, wenn das Prog im Fokus ist!
    Mit keylisterner habe ich es bereits versucht... aber wie schaffe ich es, dass ich den nicht an ein Textfield "ranhängen" muss?

    MfG
     
  4. 21. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    du kannst doch nem JFrame auch nen KeyListener zuweisen.

    die chars musst du dann natürlich irgendwie verarbeiten.
     
  5. 21. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Ich bekomme das irgendwie nicht zum Laufen...
    Wäre super, wenn mir jemand ein Beispiel geben könnte...

    Ein ganz einfaches Fenster mit z.B. nur einem Label, welches nach der "ENTER-Taste" den zuvor eingegeben String anzeigt.

    Danke

    MfG
     
  6. 21. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Bitteschön:

    PHP:
    import java . awt . event . KeyEvent ;
    import java . awt . event . KeyListener ;
    import javax . swing . JFrame ;
    import javax . swing . JLabel ;

    public class 
    TestFrame  extends  JFrame  {
        
        
    JLabel label  null ;
        
    String text  "" ;

        public static 
    void main ( String []  args ) {
            
    TestFrame frame  = new  TestFrame ();
            
    frame . setVisible ( true );
        }
        
        public 
    TestFrame () {
            
    setSize ( 300 100 );
            
    setDefaultCloseOperation ( EXIT_ON_CLOSE );
            
    label  = new  JLabel ( "test" );
            
    add ( label );
            
    addKeyListener (new  KeyListener () {
                
                public 
    void keyTyped ( KeyEvent e ) {
                    
                }
                
                public 
    void keyReleased ( KeyEvent e ) {
                    if (
    e . getKeyCode () ==  KeyEvent . VK_ENTER ) {
                        
    label . setText ( text );
                        
    text  "" ;
                    } else {
                        
    text  +=  e . getKeyChar ();
                    }
                }
                
                public 
    void keyPressed ( KeyEvent e ) {
                    
                }
            });
        }

    }
     
  7. 22. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Hey ich danke dir vielmals Perfekt!
     
  8. 24. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Ich hätte noch eine kleine Frage... vll muss ich dafür keinen neuen Thread aufmachen

    Habe jetzt mein java Prog soweit fertig... u.a. ist auch eine propertie Datei eingelesen, welche bestimmte Werte festlegt.

    Nachdem ich das Projekt jetzt "gebuildet" habe.. gibt es keine propertie Datei im Build Verzeichnis... und manche Funktionen im Programm, welche Werte aus der Datei ändern sollen, laufen nicht mehr.

    Hat da jemand eine Lösung?

    Danke schonmal
     
  9. 24. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    ich nehme mal an du nutzt auch eclipse als ide...

    du hast die properties datei also als resource in deinem projekt?
    dann brauchst nur rechtsklick auf die machen und "build path" - "add to build path" auswählen.

    edit: falsch, das is natürlich für zusätzliche bibliotheken (.jars) ^^
    sag mal wie deine verzeichnisstruktur is und wo sich die datei befindet
     
  10. 25. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Danke für deine Antwort...
    Also ich benutze Netbeans, nicht Elclipse.

    Die propertie Datei liegt im Projektordner im src Verzeichnis, indem auch die .java und .form Dateien liegen.

    MfG
     
  11. 25. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Das einfachste wäre doch, wenn du versuchst die Properties-Datei auf zu machen, und wenn du sie nicht findest eine mit Defaultwerten zu erstellen.
     
  12. 25. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Dein Gedankengang kann ich jetzt leider nicht nachvollziehen ?(
    Das Problem ist doch folgendes:

    Das Prog zieht u.a. bei manchen Funktionen Daten aus einer propertie Datei, was auch funktioniert.
    In anderen Funktionen, wie z.B. "Einstellungen" werden Werte in einer propertie Datei geändert.
    Und genau das Ändern geht nicht!


    Vll hat noch jemand eine Lösung...
     
  13. 25. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Wie liesst du die Properties datei aus? Eigentlich müsste der doch, wenn die datei nicht da ist eine Exception schmeißen. Die kannst du abfangen, überprüfen, ob die Datei überhaupt existiert und notfalls mit den defaultwerten erzeugen (dann weißt du mit sicherheit dass die auch da ist wo sie sein soll).
     
  14. 25. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Genau. Beim laden der Datei gucken, ob sie da ist, wenn nicht mit default Werten erstellen.

    http://download.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream)

    Stichwort: save/store, load.

    Ergo einfach versuchen zu laden, wenns nicht klappt, dann nen properties objekt erstellen, dieses mit defaultwerten füllen und danach nen store machen.
     
  15. 25. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    also du willst in die selbe propterties datei, aus der du gelesen hast wieder schreiben?
    zeig mal deinen code dazu. vll. hast du noch einen stream zu der datei offen und kannst sie deshalb nicht ändern.
    oder du darfst vll. generell keine src dateien des programms während der laufzeit ändern...
     
  16. 28. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    Danke für eure Hilfen... aber ich glaube, dass ihr es noch nicht ganz verstanden habt.
    Wenn ich es aus Netbeans heraus ausführe (Run File bzw. Run Project), dann läuft alles super.
    Nur nach dem builden... als "eigenständige" Datei kann er scheinbar nicht mehr schreiben.
    Beim Debugging gibt es keine Meldungen!


    Er findet das propertie File nicht! Hier der Pfad, welchen er sucht:
    Code:
    (...)\NetBeansProjects\JavaApplications1\dist\JavaAplication1.jarl\javaaplication1\configuration.properties
    wo ist der Fehler?


    Hier die "lese Funktion" welche immer am Anfang ausgeführt wird:
    Code:
    public void leseComPort() throws IOException{
     // Lesen des ComPorts aus properties File
    
     InputStream istream = Einstellungen.class.getResourceAsStream("configuration.properties");
     Properties p = new Properties(System.getProperties());
     p.load(istream);
     String comp = p.getProperty("displaycomport");
     Integer compindex = Integer.parseInt(comp);
     //istream.close();
     // display new properties
     EinstellungenComboBox.setSelectedIndex(compindex);
    
     }

    Und hier die "schreib Funktion" welche beim Speichern ausgeführt wird und die Ex. wirft... jedoch nur bei der gebuildeten Datei...:
    Code:
    public void speichereComPort(Integer ComPort) throws IOException{
     // Speichern des neuen ComPorts in properties File
     
     String ComPortString = ComPort.toString();
     Properties prop = new Properties();
     InputStream istream = Einstellungen.class.getResourceAsStream("configuration.properties");
     prop.load(istream);
     prop.setProperty("displaycomport", ComPortString);
     URL url = getClass().getResource("configuration.properties");
     File file = new File(url.getFile());
     BufferedOutputStream bos = new BufferedOutputStream(new
    
     FileOutputStream(file));
     prop.store(bos, "header");
    }
    MfG
     
  17. 28. Februar 2011
    AW: Tastatur einlesen... ohne textfield

    ich gehe davon aus, dass die properties datei nicht in der jar ist oder? allgemein weiß ich nicht obs so dolle ist das alles in einer jar zu lassen. ich würde die properties datei außerhalb der jar erstellen (also die IOException fangen und ggf die properties datei erstellen.
     
  18. 1. März 2011
    AW: Tastatur einlesen... ohne textfield

    Hey! Danke für deine Antwort...
    Leider verstehe ich das nicht so ganz.

    Woran erkenne ich, ob die propertie in der jar ist?
    Also... da ich die Daten selbst bei der alleinstehenden, gebuildeten jar auslesen kann, denke ich schon, dass sie enthalten ist.

    Was meinst du mit deinem letzten Satz? Die Datei besteht bereits und soll immer nur ggf. verändert werden.

    Danke
    MfG
     
  19. 1. März 2011
    AW: Tastatur einlesen... ohne textfield

    also eine jar datei ist ansich eine zip datei, kannst du also mit jedem packprogramm mal gucken, ob in der jar die datei an der entsprechenden stelle ist.

    der letzte satz meint, dass du die entsprechende properties datei nicht in der jar datei suchst (guck dir die fehlermeldung an, der sucht die in der jar datei, was wohl unschön ist). du könntest zB die properties datei immer im selben ordner erstellen, in dem die jar gerade liegt. dies könnte man so umsetzen, dass man den codeblock so nimmt wie du den hast, nur dass du ein try-catch drum machst und die IOException fängst und guckst ob das einzige problem ist, dass die properties datei nicht vorhanden ist. in diesem fall kannst du diese datei erzeugen und mit entsprechenden default-werten füllen
     
  20. 1. März 2011
    AW: Tastatur einlesen... ohne textfield

    Achso... das ist natürlich die einfachste Variante Und die Antwort: Ja sie ist in der Jar drin.

    Es wäre schon eine schöne Sache, wenn die Datei auch intern bleiben könnte - nicht "offen" im Ordner.
    Jetzt ist die Frage für mich immer noch offen, warum die Datei aus Netbeans aus gefunden wird.. und beim Ausführen der jar zwar gelesen wird, jedoch kein Schreiben möglich ist... ?(
     
  21. 1. März 2011
    AW: Tastatur einlesen... ohne textfield

    hmm mal so ne überlegung: schließ mal deine streams nach der benutzung
     
  22. 2. März 2011
    AW: Tastatur einlesen... ohne textfield

    Das hatte ich auch schon im Verdacht... keine Veränderung
    Hatte ich oben im Quelltext auch noch auskommentiert drin "//istream.close();".
    Oder gibts noch andere Varianten?

    MfG
     
  23. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.