Incorrect and permanent loss of keyboard focus
- From: "James L. Terman" <jim@xxxxxxxxxxxxx>
- Date: Thu, 03 May 2007 21:55:53 GMT
I have a small sample problem that replicates my problem. The program
creates a window with a text field that has keyboard focus.
The window has a menu item that I use to create another window of that
type that correctly gets the keyboard focus.
I then click on the old window, bring it to front. It does not get the
keyboard focus like it should in Linux. It will work correctly in windows.
I tried adding the call requestFocusInWindow which did not help and led
to unpredictable behavior. The problem seems to be that I am in the
situation where the call
KeyboardFocusManager.getCurrentKeyboardFocusManager
().getPermanentFocusOwner()
is returning the expected Component. The problem is that the KeyListener
class that is registered with the Component is not being called when a
key is being pressed.
The issue is that I have a component that has the keyboard focus, but the
KeyListener class
is not responding.
This seems to be a linux only problem which makes it only more mysterious.
uname -aLinux watson 2.6.20-1.2933.fc6 #1 SMP Mon Mar 19 11:38:26 EDT 2007 i686
i686 i386 GNU/Linux
java -versionjava version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing)
javac -versionjavac 1.5.0_11
import java.awt.event.*;
import javax.swing.*;
class SwingWindow extends JFrame {
SwingWindow() {
super("SwingWindow");
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem newItem = new JMenuItem("New");
newItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
SwingWindow.createAndShowGUI();
}
});
fileMenu.add(newItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JTextField text = new JTextField(200);
getContentPane().add(text);
pack();
setSize(700, 275);
}
public static void createAndShowGUI() {
JFrame frame = new SwingWindow();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
.
- Follow-Ups:
- Re: Incorrect and permanent loss of keyboard focus
- From: Knute Johnson
- Re: Incorrect and permanent loss of keyboard focus
- Prev by Date: Using panels
- Next by Date: Re: Using panels
- Previous by thread: Using panels
- Next by thread: Re: Incorrect and permanent loss of keyboard focus
- Index(es):
Relevant Pages
|