Tastatur initialisieren JFrame Probleme

Vivyel

Mitglied
Hallo Leute,

zuerst ein bisschen was zu meinen Programmierenkenntnissen.
-ich studiere wirtschaftsinformatik bald im 5. Semester
-meine java kenntnisse sind nicht so berauschend (java liegt mir auch nicht sonderlich)
-ich habe letztes semester mit visual studio 2013 (c# und xaml) eine Gehirnjogging mathe app entwickelt die ich gerne in java(eclipse luna mit JFrame) umsetzen möchte.(als übung und vorbereitung)


ich nutze in eclipse den windowbuilder für design und das erstellen von events. zur zeit hänge ich bei den Buttons fest. ich hab das netz bereits einige stunden durchforstet, aber nichts gefunden, was mein problem gelöst hätte, hier im forum fand ich auch keinen helfenden Beitrag. (vielleicht hab ich mein setFocusable(true) falsch gesetzt?)

Problem:
ich möchte, dass die tastatur von anfang an initialisiert ist und immer funktioniert, egal ob ich vorher einen button gedrückt habe oder nicht. Momentan muss ich den button anklicken dann funktioniert die taste, sobald ich einen anderen button drücke geht sie wieder nicht mehr.

interessant ist auch, sobald ich einen system.out hinzufüge zum pressed key zeigt er mir an, dass die taste nicht gedrückt werden würde.

Bitte helft mir, ich weiß nicht worin der Fehler liegt.
bei c# konnte ich die tastatur via automatisch erzeugten switch case generieren lassen und die jeweiligen tastatur cases mit meinen methoden versehen. über initilisize method wurde die windows tastatur initialisiert.und funktionierte einwandfrei.

ich habe diesen einfachen testcode generiert:
Java:
public class test extends JFrame implements KeyListener {
   private JTextField ausgabe;
     
   public test() {
     getContentPane().setLayout(null);
      setFocusable(true);
    
     ausgabe = new JTextField();
     ausgabe.setEditable(false);
     ausgabe.setBounds(66, 39, 86, 20);
     getContentPane().add(ausgabe);
     ausgabe.setColumns(10);
    
     JButton button1 = new JButton("1");
     button1.addKeyListener(new KeyAdapter() {
      
      
      
      @Override
       public void keyPressed(KeyEvent e) {
        
         if (e.getKeyChar() == 'a')
          
          {   ausgabe.setText( ausgabe.getText() + "a");}
       }
     });
        
    
     button1.addMouseListener(new MouseAdapter() {
       @Override
       public void mouseClicked(MouseEvent e) {
         ausgabe.setText( ausgabe.getText() + "1");
       }
     });
     button1.setBounds(55, 129, 89, 23);
     getContentPane().add(button1);
    
     JButton clear = new JButton("C");
     clear.addMouseListener(new MouseAdapter() {
       [USER=48687]@Override[/USER]
       public void mouseClicked(MouseEvent e) {
         ausgabe.setText( "");
       }
     });
     clear.setBounds(206, 129, 89, 23);
     getContentPane().add(clear);
   }
  
   public static void main (String[] args)
   {
     new test().setVisible(true);
  
  
    
   }
}


Vielen dank an alle die helfen liebe grüße vivyel
 
Zuletzt bearbeitet von einem Moderator:

Vivyel

Mitglied
edit:
zusammenfassung: ich weise einem button einen keypressed eventhandler zu für zb. taste a schreibt a in das feld, jedoch funktioniert dies nicht. die taste lässt sich nur nutzen wenn ich vorher mit der maus auf den button klicke, sobald ich einen anderen button anklicke geht die taste wieder nicht.

Ziel: die taste soll immer funktionieren wenn sie gedrückt wird und das entsprechende in das feld schreiben.
P.S. ich hab beim texfeld die editierbarkeit ausgeschaltet. (schade, dass man seinen post nicht editieren kann oder ich hab das i-wo übersehen)
 

RalleYTN

Bekanntes Mitglied
Das Problem liegt daran, dass Events nur auf einer fokussierten Komponente funktionieren. Entweder du machst folgendes mit dem Button:
Java:
button1.setFocusable(true);
button1.requestFocus();
oder zu addest den KeyListener zu dem JFrame. Wenn du den KeyListener zu dem JFrame hinzufügst dann funktioniert er überall innerhalb des JFrames, solange dieses fokussiert ist. Allerdings musst du dann auch das JFrame fokussierbar machen mit setFocusable(boolean).

.... Es gibt da einen kleinen blauen Text mit der Aufschrift "Bearbeiten" *hust

Ich hoffe ich konnte dir weiterhelfen. ;)
 

Enceladus271

Bekanntes Mitglied
Also button1.requestFocus() bringt nichts, denn sobald man eine andere fokusierbare Komponente anklickt verliert der Button den Fokus wieder.

Den Listener zum Frame hinzufügen funktioniert nur, solange keine andere fokussierbare Komponente im Frame liegt. Sobald du z.B. einen weitern Button button2 hinzufügst und anklickst kommt das Event nicht mehr zum Frame durch. Du müsstest also den Listener zum Frame selbst und zu allen fokusierbaren Komponenten hinzufügen.

Eine Alternative sind KeyBindings (https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html):
Java:
    button1.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ).put( KeyStroke.getKeyStroke( 'a' ), "Aktion für a" );
     button1.getActionMap().put( "Aktion für a", new AbstractAction() {

       @Override
       public void actionPerformed( ActionEvent e ) {
         System.out.println( "Taste a wurde gedrückt" );
       }
     } );
 

Vivyel

Mitglied
Enceladus271 vielen dank, jetzt funktioniert die Tastenzuweisung so wie sie soll. Der Trick mit den KeyBindings war mir nicht bekannt.
 

Vivyel

Mitglied
weist du zufällig auch wie ich enter und backspace mit keybinding schreiben kann? der key stroke scheint ja nur strings verarbeiten zu können.
Ich habe es so versucht, aber da meckert eclipse. es schlägt mir einen cast zu char vor, wenn ich das mache zeigt er zwar keinen fehler an, jedoch funktioniert enter dann nicht. ich hab auch schon schreibweisen mit keycode und keyevent in verschiedenen kombinationen ausprobiert ohne erfolg. in google hab ich noch die schreibweise "ENTER" gefunden, aber funktioniert erst recht nicht.

für hilfe bin ich sehr dankbar.
hier mein lösungsansatz. java unterringelt mir getkeystroke. ich hab schon versucht es durch keycode und key event zu ersetzen, leider hat nichs davon funktioniert.

enter.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ).put( KeyStroke.getKeyStroke(KeyEvent.VK_ENTER ), "Aktion für enter" );
clear.getActionMap().put( "Aktion für enter", new AbstractAction() {
 

Enceladus271

Bekanntes Mitglied
Java:
KeyStroke.getKeyStroke( KeyEvent.VK_ENTER, 0 )
Das zweite Argument ist der Modifier. Hier kann man z.B. java.awt.event.InputEvent.CTRL_DOWN_MASK oder Ähnliches angeben. Modifier 0 bedeutet "kein Modifier".

Wenn man wissen möchte welche Möglichkeiten es gibt, kann man sich bei sowas einfach die Javadocs der Klasse durchlesen. Da steht sowas alles drin.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Xaver code Tastatur ausgabe Java Basics - Anfänger-Themen 4
S Tastatur input lesen Java Basics - Anfänger-Themen 7
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
T Tastatur mit robot ß ^ und @ simulieren Java Basics - Anfänger-Themen 4
N Tastatur simulieren Java Basics - Anfänger-Themen 4
T Tastatur angeschlossen? Java Basics - Anfänger-Themen 3
H Tastatur.wurdeGedrueckt() macht nicht das, was ich will :/ Java Basics - Anfänger-Themen 2
T relais über virtuelle tastatur ansprechen Java Basics - Anfänger-Themen 6
S Text über Tastatur eingeben und ausgeben Java Basics - Anfänger-Themen 6
S Tastatur zuweisungen Java Basics - Anfänger-Themen 3
F Frage zu amerikanischer Tastatur Java Basics - Anfänger-Themen 9
E Tastatur Java Basics - Anfänger-Themen 3
P Tastatur funktioniert nicht Java Basics - Anfänger-Themen 4
E auf Tastatur reagieren Java Basics - Anfänger-Themen 8
D Datentypen SUM-Kern Tastatur Hotkey Java Basics - Anfänger-Themen 2
H Problem mit Tastatur Befehl Java Basics - Anfänger-Themen 11
P Eingabe von Tastatur Java Basics - Anfänger-Themen 4
P Problem mit der Tastatur Java Basics - Anfänger-Themen 31
G Strings von Tastatur einlesen und in ArrayList speichern Java Basics - Anfänger-Themen 12
Spin Von der Tastatur einlesen grafisch Java Basics - Anfänger-Themen 2
T Tastatur Tasten Senden Java Basics - Anfänger-Themen 4
Misti Eingabe Tastatur bzw. Datei Java Basics - Anfänger-Themen 6
G Zu Laufzeit von Tastatur einlesen Java Basics - Anfänger-Themen 11
S Von der Tastatur eingelesene Strings miteinander vergleichen Java Basics - Anfänger-Themen 4
J Tastatur-Puffer leeren Java Basics - Anfänger-Themen 3
A JTable nimmt eingaben von tastatur nicht an? Java Basics - Anfänger-Themen 2
M Tastatur.leseZahl(); geht nicht in Methoden ? Java Basics - Anfänger-Themen 3
M Fokus mit Maus und Tastatur Java Basics - Anfänger-Themen 5
M Eclipse --> Befehl: "Tastatur.leseKommazahl();" Java Basics - Anfänger-Themen 6
V Tastatur Abfrage im Lisener für eine Auswahl üder Textfeld Java Basics - Anfänger-Themen 8
N Tastatur direkt einlesen (ohne Enter) Java Basics - Anfänger-Themen 3
B Tastatur abfangen Java Basics - Anfänger-Themen 11
D Unsichtbar von der Tastatur einlesen Java Basics - Anfänger-Themen 7
B Eingabe von Tastatur Java Basics - Anfänger-Themen 2
B import class.tastatur Java Basics - Anfänger-Themen 2
E Array ueber Tastatur einlesen Java Basics - Anfänger-Themen 2
I einen text von tastatur in array einlesen und auch ausgeben Java Basics - Anfänger-Themen 1
G Eine ganze Zeile von der Tastatur einlesen! Java Basics - Anfänger-Themen 2
M Ein Zeichen von der Tastatur einlesen Java Basics - Anfänger-Themen 6
M Programm soll n Zahlen von der Tastatur lesen(Mittelwert) Java Basics - Anfänger-Themen 8
S tastatur ungepuffert abfragen Java Basics - Anfänger-Themen 3
D Nochmal zu den dummen Eingaben über Tastatur Java Basics - Anfänger-Themen 15
M Maus und Tastatur Java Basics - Anfänger-Themen 5
F Tastatur in Java Java Basics - Anfänger-Themen 12
G Maus+Tastatur aktionen simulieren? Java Basics - Anfänger-Themen 5
D Ein Wort einlesen über Tastatur und wieder ausgeben Java Basics - Anfänger-Themen 6
T Tastatur Java Basics - Anfänger-Themen 2
B Tastatur eingaben abfragen und dann in Argumente zerlegen..? Java Basics - Anfänger-Themen 8
T Standardkonstruktor, Attribute initialisieren Java Basics - Anfänger-Themen 5
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
X Attribut initialisieren Java Basics - Anfänger-Themen 1
M Deklarieren und Initialisieren von Arrays Java Basics - Anfänger-Themen 3
Dawinartor Erste Schritte Statisch, Initialisieren, Deklarieren, ... Java Basics - Anfänger-Themen 1
L Variable in If-Statement initialisieren Java Basics - Anfänger-Themen 4
C Verschachteltes Array initialisieren Java Basics - Anfänger-Themen 6
D Vektoren Initialisieren Java Basics - Anfänger-Themen 1
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
T Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren Java Basics - Anfänger-Themen 14
J Array ausserhalb der Methode initialisieren Java Basics - Anfänger-Themen 4
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
M Java Arrays mit Werten initialisieren Java Basics - Anfänger-Themen 3
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L Arrays richtig initialisieren Java Basics - Anfänger-Themen 1
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
B Rekursion - Variable initialisieren Java Basics - Anfänger-Themen 2
T Variable deklarieren, ohne zu initialisieren... Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
K Objekte im Konstruktor initialisieren Java Basics - Anfänger-Themen 3
CyberFish initialisieren, obwohl es gemacht wurde! Bitte um Hilfe Java Basics - Anfänger-Themen 10
K Array mit Double initialisieren Java Basics - Anfänger-Themen 10
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
J StringBuilder initialisieren und Löschbefehl Java Basics - Anfänger-Themen 20
M Mehrdimensionales Array initialisieren Java Basics - Anfänger-Themen 3
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
N Mit Kontrukor der Oberklasse lokale Variable initialisieren Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
S Mehrdimensionales Char-Array initialisieren Java Basics - Anfänger-Themen 17
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
C Zweidimensionales String Array initialisieren Java Basics - Anfänger-Themen 2
D List<String[]> initialisieren Java Basics - Anfänger-Themen 4
D Problem mit Objekten Vererbung deklarieren initialisieren usw Java Basics - Anfänger-Themen 12
B Arrays initialisieren Java Basics - Anfänger-Themen 2
S Variable Initialisieren, aber wo? Java Basics - Anfänger-Themen 36
Y Array initialisieren, nach der Abfrage? Java Basics - Anfänger-Themen 3
K Datentypen Globale Variable direkt initialisieren oder im Konstruktor? Java Basics - Anfänger-Themen 13
N ARRAY initialisieren Java Basics - Anfänger-Themen 5
T Mehrere Variablen gleichzeitig initialisieren Java Basics - Anfänger-Themen 2
F Dreidimensionales Array? Wie initialisieren? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben