H
hey-ho
Gast
Hallo,
ich hab mir für meine Swing-Anwendung einen KeyListener geschrieben, der bei Drücken der Tasten STRG+N immer den Dialog zum Eingeben einer neuen Person aufrufen soll, egal, wo sich das Programm gerade befindet. Das klappt teilweise auch ganz gut, aber nur am Anfang. Später reagiert das Programm nicht mehr auf diese Tastenkombination. Wenn ich z.B. meine Tabelle anzeigen lasse geht die Tastenkombination noch, sobald ich aber in der JTable eine Zeile selektiert habe, geht STRG+N nicht mehr. Auch wenn ich einen Button gedrückt habe. Hier mal die relevanten Codeteile...
Die Startklasse:
Mein MainFrameCommand:
Und mein HauptFrame:
Hab ich da irgendwas falsch gemacht? Wird der KeyListener durch irgendwas wieder "abgeschaltet". Vielleicht kann mir ja wer helfen. Danke.
ich hab mir für meine Swing-Anwendung einen KeyListener geschrieben, der bei Drücken der Tasten STRG+N immer den Dialog zum Eingeben einer neuen Person aufrufen soll, egal, wo sich das Programm gerade befindet. Das klappt teilweise auch ganz gut, aber nur am Anfang. Später reagiert das Programm nicht mehr auf diese Tastenkombination. Wenn ich z.B. meine Tabelle anzeigen lasse geht die Tastenkombination noch, sobald ich aber in der JTable eine Zeile selektiert habe, geht STRG+N nicht mehr. Auch wenn ich einen Button gedrückt habe. Hier mal die relevanten Codeteile...
Die Startklasse:
Code:
public class Start {
public Start() {
MainFrameCommand cmd = new MainFrameCommand();
HauptFrame hauptFrame = new HauptFrame(cmd);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Start();
}
});
}
}
Mein MainFrameCommand:
Code:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class MainFrameCommand
implements KeyListener
{
public void keyPressed(KeyEvent event)
{
HauptFrame source = (HauptFrame)event.getSource();
if (event.getKeyCode() == KeyEvent.VK_N && event.isControlDown()) {
new DialogNeuePerson(source);
}
}
public void keyReleased(KeyEvent event)
{
}
public void keyTyped(KeyEvent event)
{
}
}
Und mein HauptFrame:
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class HauptFrame extends JFrame {
private int width, height;
private int x, y;
private Dimension d;
private HauptMenue hauptmenue;
JPanel hauptPanel;
public HauptFrame(KeyListener cmd) {
setTitle("Personen");
// Grösse des Bildschirms abfragen
d = Toolkit.getDefaultToolkit().getScreenSize();
// Framegrösse 9/10 vom kompletten Bildschirm
width = d.width * 9 / 10;
height = d.height * 9 / 10;
// Frame auf Bildschirm zentriert
x = (d.width / 2) - (width / 2);
y = (d.height / 2) - (height / 2);
setBounds(x, y, width, height);
hauptPanel = new JPanel();
hauptPanel.setLayout(new BorderLayout());
add(BorderLayout.CENTER, hauptPanel);
hauptmenue = new HauptMenue(this);
setJMenuBar(hauptmenue);
addKeyListener(cmd);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
Hab ich da irgendwas falsch gemacht? Wird der KeyListener durch irgendwas wieder "abgeschaltet". Vielleicht kann mir ja wer helfen. Danke.