Tasten gedrückt gehalten??

centrax

Mitglied
Hallo Forum,

Ich habe folgendes Problem:
Ich möchte in einem swing-Fenster (JFrame) fragen, ob gerade ein Knopf gedrückt ist.
Natürlich kann ich über KeyListener immer mitkriegen, wenn ein Knopf gedrückt wird, aber ich möchte in regelmäßigen Abständen erfragen, ob ein Knopf runtergedrückt ist oder nicht.
Gibt es dafür in einer JAVA-Standartbibliothek eine Methode??

sowas wie:
Java:
//...

public boolean keyIsPressedAtTheMoment(int keyCode) {
//Methode, die true zurueckgibt, wenn die entsprechende Taste gedrückt ist
}

//...

Ich habe bis jetzt eine "Tabelle" programmiert, die bei jedem keyPressed() den entsprechenden KeyCode als gedrückt markiert und nach einer gewissen zeit wieder abmarkiert, wenn nicht ein neues keyPressed() mit diesem Code durchgeführt wurde.
Aber diese Löung ist nicht nur etwas inkonsistent sondern auch noch Speicherbelastend; daher frage ich mich, ob es sowas wie diese Methode gibt, oder irgendwas anderes, dass mit gedrückt gehaltenen Tasten zu tun hat.
Ich freue mich über jede Hilfe!

Liebe Grüße,
centrax
 

agentone

Bekanntes Mitglied
Du nimmst für jede abzufragende Taste eine boolean-Variable oder du erstellst ein boolean-Array.
Dann fängst du die keyPressed und keyReleased Ereignisse ab und setzt entsprechend die Variable auf true oder false. Danach kannst du dann die GUI erneuern.
 

centrax

Mitglied
Danke, stimmt ja!
Ich hab in meinem Programm nur keyPressed() eingebaut, aber keyReleased() ausser Acht gelassen..
Ich hab sowas kompliziertes gemacht, dabei wäre es soo einfach..
Vielen Dank für die Hilfe!

Liebe Grüße,
centrax
 

agentone

Bekanntes Mitglied
Das kann passieren, vorallem wenn man vergisst ab und zu in die Doku zu schauen... :)
Ich freu mich aber, wenn man Probleme so einfach lösen kann.
 
G

Gast2

Gast
Ich check zwar nicht was du machen willst. Aber wenn du dir merken willst, welche Taste gedrückt wurde nimmst nen KeyListener und ein HashSet und speicherst für den entprechenden KeyStroke immer die Boolean Variable dazu...
 

agentone

Bekanntes Mitglied
in regelmössigen Abständen überprüfen soll ob eine Taste gedruckt wurde

Vielleicht weil man ein Spiel programmiert und dann im regelmäßigen Timer-Event abfragen will, ob eine bestimmte Taste gedrückt wird, um dann die Spielfigur entsprechend bewegen zu können?
 

m@nu

Bekanntes Mitglied
bez. gameprogrammierung: da will man ja evtl. auch mal mehrere tasten abfragen...
hier ein kurzes snippet, welches auch agentone gemeint haben könnte:

Java:
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class GUI extends JFrame implements KeyListener, Runnable {

   private JPanel jContentPane = null;
   private boolean[] action;
   private Thread derThread;

   public GUI() {
      super();
      action = new boolean[256];
      for (int i = 0; i < action.length; i++) {
         action[i] = false;
      }
      initialize();
      
      addKeyListener(this);
      
      derThread = new Thread(this);
      derThread.start();
   }

   /**
    * This method initializes this
    *
    * @return void
    */
   private void initialize() {
      this.setSize(0, 200);
      this.setContentPane(getJContentPane());
      this.setTitle("JFrame");
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }

   /**
    * This method initializes jContentPane
    *
    * @return javax.swing.JPanel
    */
   private JPanel getJContentPane() {
      if (jContentPane == null) {
         jContentPane = new JPanel();
         jContentPane.setLayout(new BorderLayout());
      }
      return jContentPane;
   }

   public void keyTyped(KeyEvent e) {
   }

   public void keyPressed(KeyEvent e) {
      action[e.getKeyCode()] = true;
   }

   public void keyReleased(KeyEvent e) {
      action[e.getKeyCode()] = false;
   }

   public void run() {
      while(true) {
         
         for (int i = 0; i < action.length; i++) {
            if(action[i] == true) {
               System.out.println("Taste: "+KeyEvent.getKeyText(i));
            }
         }
         
         try {
            Thread.sleep(1000 / 3);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }
   }

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
Hoppelmann Swing Tasten in JTextArea blockieren AWT, Swing, JavaFX & SWT 2
S Swing JTextArea - Bild auf/ab Tasten implementieren AWT, Swing, JavaFX & SWT 4
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
K Tabelle -> Editor -> b-estimmte Tasten AWT, Swing, JavaFX & SWT 17
A Tasten abfangen AWT, Swing, JavaFX & SWT 9
sparrow Tasten mit Umlauten im KeyListener verhalten sich seltsam AWT, Swing, JavaFX & SWT 4
G JTable: Auf Tasten reagieren möglich? AWT, Swing, JavaFX & SWT 2
U Mehrere Tasten gleichzeitig AWT, Swing, JavaFX & SWT 4
thE_29 kompletten frame für tasten/mousevents "ausschalten&quo AWT, Swing, JavaFX & SWT 4
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
K Swing Buttons erst blinken lassen und dann abfragen, ob sie gedrückt worden sind AWT, Swing, JavaFX & SWT 2
P Knopf gedrückt -> Textfeld befüllen AWT, Swing, JavaFX & SWT 9
D JavaFX Überprüfung, ob Strg gedrückt ist AWT, Swing, JavaFX & SWT 3
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
G JavaFX Button gedrückt "Effekt" AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
J Abbrechen muss immer einmal mehr gedrückt werden AWT, Swing, JavaFX & SWT 3
C JButton umbennen wenn gedrückt AWT, Swing, JavaFX & SWT 9
B Event Handling jButton gedrückt halten als mehrmaliges Drücken interpretieren AWT, Swing, JavaFX & SWT 4
R Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden. AWT, Swing, JavaFX & SWT 3
R Swing Abfragen, ob ein jButton gedrückt _IST_ AWT, Swing, JavaFX & SWT 6
H Swing Den Button einer JToolBar gedrückt halten AWT, Swing, JavaFX & SWT 9
H Funktion ausführen wenn Button gedrückt wird. AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
B mehre Buttons auf einem Panel wie gedrückt merken AWT, Swing, JavaFX & SWT 2
N solange Maustaste gedrückt Event AWT, Swing, JavaFX & SWT 15
raptorrs JFrame nur anzeigen, solange die Mouse gedrückt ist AWT, Swing, JavaFX & SWT 3
A JToolBar: Welcher Button wurde gedrückt? AWT, Swing, JavaFX & SWT 5
T JDialog schließen, wenn ESC gedrückt wurde AWT, Swing, JavaFX & SWT 2
D JButton gedrückt lassen AWT, Swing, JavaFX & SWT 3
R Thread stoppen, nachdem eine Taste gedrückt wird AWT, Swing, JavaFX & SWT 2
F Abfrage, ob Key gedrückt gehalten wird ?? AWT, Swing, JavaFX & SWT 2
I Wenn Maustaste länger gedrückt wird. AWT, Swing, JavaFX & SWT 7
K button gedrückt halten AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben