G
Gast
Gast
Hallo,
ich habe ein kleines Keylistener/Fokus Problem. Angenommen man hat ein Fenster als Eingabemaske mit verschiedenen Datenfeldern und einem OK-Button. Ich möchte nun, dass der Ok-Button aktiviert wird sobald man die "Enter"-Taste drückt. Deshalb habe ich dem Fenster einen Keylistener hinzugefügt, der das bewerkstelligen sollte. Das Problem scheint nun darin zu liegen, dass sobald eine Komponente (z.B. Textfeld) im Fenster den Fokus hat, der Keylistener für das Fenster nicht aufgerufen wird. Die naheliegende Lösung wäre nun für jede dieser Komponenten im Fenster den Keylistener zu setzen, was aber doch ziemlich umständlich wäre.
Wie schaffe ich es, dass der Keylistener des Fensters aufgerufen wird, obwohl eine andere Komponente innerhalb des Fensters den Fokus hat?
Zur Demonstration des Problems habe ich ein Beispielprogramm geschrieben. Wenn man "Enter" drückt, sollte der OK-Button aktiviert werden, was aber leider nicht funktioniert .
ich habe ein kleines Keylistener/Fokus Problem. Angenommen man hat ein Fenster als Eingabemaske mit verschiedenen Datenfeldern und einem OK-Button. Ich möchte nun, dass der Ok-Button aktiviert wird sobald man die "Enter"-Taste drückt. Deshalb habe ich dem Fenster einen Keylistener hinzugefügt, der das bewerkstelligen sollte. Das Problem scheint nun darin zu liegen, dass sobald eine Komponente (z.B. Textfeld) im Fenster den Fokus hat, der Keylistener für das Fenster nicht aufgerufen wird. Die naheliegende Lösung wäre nun für jede dieser Komponenten im Fenster den Keylistener zu setzen, was aber doch ziemlich umständlich wäre.
Wie schaffe ich es, dass der Keylistener des Fensters aufgerufen wird, obwohl eine andere Komponente innerhalb des Fensters den Fokus hat?
Zur Demonstration des Problems habe ich ein Beispielprogramm geschrieben. Wenn man "Enter" drückt, sollte der OK-Button aktiviert werden, was aber leider nicht funktioniert .
Code:
public class MainWindow extends JFrame
{
private JButton btnOk;
public MainWindow()
{
btnOk = new JButton("OK");
btnOk.setActionCommand("BTN_OK");
btnOk.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "Ok Button pressed!");
}
}
);
JPanel commandPanel = new JPanel();
commandPanel.add(btnOk);
getContentPane().add(commandPanel, BorderLayout.SOUTH);
addKeyListener
(
new KeyAdapter()
{
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER)
btnOk.doClick();
}
}
);
setSize(640, 480);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("KeyListener Test");
setVisible(true);
}
public static void main(String[] args)
{
new MainWindow();
}
}