|
You last visited: Today at 23:36
Advertisement
[Java] KeyListener auf JFrame
Discussion on [Java] KeyListener auf JFrame within the Java forum part of the Coders Den category.
02/20/2014, 22:28
|
#1
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
[Java] KeyListener auf JFrame
Hey,
ich bekomms irgendwie nicht hin, dass der KeyListener auf meinem JFrame tut. So ist er eigentlich direkt auf der Form, aber es passiert nichts
|
|
|
02/21/2014, 08:47
|
#2
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Das JFrame muss einen Focus haben, sonst geht es auf einer JFrame direkt nicht.
Code:
...
Container con = getContentPane();
con.setFocusable(true);
con.addKeyListener(MyListener);
...
|
|
|
02/21/2014, 08:52
|
#3
|
elite*gold: 0
Join Date: Jun 2013
Posts: 294
Received Thanks: 38
|
this.addKeyListener(Listener);
Wenn du JFrame in der Klasse extended hast.
|
|
|
02/22/2014, 15:02
|
#4
|
elite*gold: 27
Join Date: Jul 2010
Posts: 282
Received Thanks: 46
|
Wenn du möchtest, dass der KeyListener auch außerhalb des JFrames funktioniert (also das JFrame nicht im Fokus ist), dann kannst du das mit JNI machen, und einen nativen Keyboard Hook nehmen.
|
|
|
02/22/2014, 19:17
|
#5
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by XxharCs
Das JFrame muss einen Focus haben, sonst geht es auf einer JFrame direkt nicht.
Code:
...
Container con = getContentPane();
con.setFocusable(true);
con.addKeyListener(MyListener);
...
|
Hab bei meinem JFrame eigentlich nen Hacken bei setFocusable gemacht, bloß im Quelltext steht das nirgends.
Hab mal den Key listener auf ein Label gesetzt, da funktioniert es.
Bloß das komische ist, dass ich ein paar Buttons hab und wenn ich auf die drauf drück die ne Funktion haben dann tut der Listener danach immer noch aber bei nem Druck auf die bei denen nichts passiert tut er danach nicht mehr.
Aber die werden ja auch noch belegt und wenn es dann tut ist das ja egal
@Karlchen, das brauch ich hier zwar nicht, aber bei einer anderen Funktion von meinem Programm ist das ziemlich nützlich! Danke
|
|
|
02/23/2014, 18:59
|
#6
|
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
|
Kleines Beispiel, vielleicht hilft es dir.
Code:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class MyFrame extends JFrame implements KeyListener
{
public MyFrame()
{
this.addKeyListener(this);
this.setSize(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void keyTyped(KeyEvent e)
{
System.out.println(e.getKeyChar());
}
@Override
public void keyPressed(KeyEvent e)
{
}
@Override
public void keyReleased(KeyEvent e)
{
}
public static void main(String[] args)
{
MyFrame f = new MyFrame();
}
}
Natürlich empfiehlt es sich die ganzen Listener in eine
eigene Klasse zu schreiben, wie gesagt soll das hier nur
ein kleines funktionierendes Beispiel sein.
|
|
|
02/25/2014, 20:23
|
#7
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by .SkyneT.
Kleines Beispiel, vielleicht hilft es dir.
Code:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class MyFrame extends JFrame implements KeyListener
{
public MyFrame()
{
this.addKeyListener(this);
this.setSize(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void keyTyped(KeyEvent e)
{
System.out.println(e.getKeyChar());
}
@Override
public void keyPressed(KeyEvent e)
{
}
@Override
public void keyReleased(KeyEvent e)
{
}
public static void main(String[] args)
{
MyFrame f = new MyFrame();
}
}
Natürlich empfiehlt es sich die ganzen Listener in eine
eigene Klasse zu schreiben, wie gesagt soll das hier nur
ein kleines funktionierendes Beispiel sein.
|
Danke, so hätte ich es eigentlich auch gelöst, das Problem ist bloß, dass ich bei dem Code den ich über Netbeans erstellt bekomme nie weiß, wie ich diesen so bearbeiten kann, da dort im änderbaren Code kein JFrame so erstellt wird wie du es beschrieben hast
Aber ich habe eine Möglichkeit gefunden einen "globalen" Keylistener zu benutzten, danke an alle
|
|
|
02/25/2014, 20:29
|
#8
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Quote:
Originally Posted by Chicken17
Danke, so hätte ich es eigentlich auch gelöst, das Problem ist bloß, dass ich bei dem Code den ich über Netbeans erstellt bekomme nie weiß, wie ich diesen so bearbeiten kann, da dort im änderbaren Code kein JFrame so erstellt wird wie du es beschrieben hast
Aber ich habe eine Möglichkeit gefunden einen "globalen" Keylistener zu benutzten, danke an alle 
|
Alle GUI-Objekte werden von NetBeans aber als Attribute angelegt. Im Konstruktor nach initComponents() kannst du dann noch deinen eigenen Code hinzufügen.
|
|
|
02/25/2014, 23:29
|
#9
|
elite*gold: 7
Join Date: May 2009
Posts: 6,910
Received Thanks: 4,497
|
Quote:
Originally Posted by dowhile
Alle GUI-Objekte werden von NetBeans aber als Attribute angelegt. Im Konstruktor nach initComponents() kannst du dann noch deinen eigenen Code hinzufügen.
|
Und wie würde ich da zum Beispiel dem kompletten Frame einen KeyListener hinzufügen? Müsste man das im Konstruktor machen oder in den initComponents (geht ja indem man bei einem Objekt custom code oder so wählt und mit pre init kann man da ja dann neue Sachen hinzufügen die quasi für alles gelten können und nicht bloß für das eine Objekt, das man gewählt hat)?
|
|
|
02/26/2014, 16:52
|
#10
|
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
|
Quote:
Originally Posted by Chicken17
Und wie würde ich da zum Beispiel dem kompletten Frame einen KeyListener hinzufügen? Müsste man das im Konstruktor machen oder in den initComponents (geht ja indem man bei einem Objekt custom code oder so wählt und mit pre init kann man da ja dann neue Sachen hinzufügen die quasi für alles gelten können und nicht bloß für das eine Objekt, das man gewählt hat)?
|
Ein eigener KeyEventDispatcher sollte genügen.
Code:
public class MyFrame extends javax.swing.JFrame
{
//[...]
private class MyDispatcher implements KeyEventDispatcher
{
@Override
public boolean dispatchKeyEvent(KeyEvent e)
{
if (e.getID() == KeyEvent.KEY_PRESSED)
{
System.out.println(e.getKeyChar()+" pressed");
}
else if (e.getID() == KeyEvent.KEY_RELEASED)
{
System.out.println(e.getKeyChar()+" released");
}
else if (e.getID() == KeyEvent.KEY_TYPED)
{
System.out.println(e.getKeyChar()+" typed");
}
return false;
}
}
public MyFrame()
{
initComponents();
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new MyDispatcher());
}
//[...]
}
|
|
|
 |
Similar Threads
|
[JAVA Error] Could not create the java virtual machine
07/21/2013 - Technical Support - 10 Replies
Schönen Abend!
Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt.
Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt.
Hoffe ihr könnt mir weiterhelfen...
Mein PC:
|
recompile Problem (Block.java, item.java)
04/13/2013 - Minecraft - 1 Replies
Guten Morgen liebe Com (:
Ich versuche etwas neues in Minecraft.. für mich einzubauen.. neuer Block + das Item dazu, des eingepflanzt werden muss.. wie bei einer Karotte oder einer Kartoffel.
Ich zeige euch den Inhalt meiner BlockOnion.java
package net.minecraft.src;
|
Java JFrame
02/05/2013 - General Coding - 2 Replies
hi hab mal ne frage muss das hier erstellen aber hab probleme also mein ansatz ist:
import javax.swing.JFrame;
public class JFrame {
public static void main (String args) {
JFrame jf = new JFrame();
jf.setVisible(true);
jf.setSize(720, 640);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
All times are GMT +1. The time now is 23:37.
|
|