Duplicate :
|
|
Duplicate :
|
|
Duplicate :
|
|
Relates :
|
FULL PRODUCT VERSION : java version "1.4.2_04" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05) Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode) ADDITIONAL OS VERSION INFORMATION : Microsoft Windows 2000 ( build 5.00.2195 ) Service Pack 4 A DESCRIPTION OF THE PROBLEM : When a component lost it focus and at focusLost() you show a JOptionPane.showMessage(), calling requestFocus of the same component that lost it causes a second call to focusLost(). STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : When focus goes to text2, shows a message, then when finish to show the message, text1 request focus, and then focusEvent is callend again( no idea by what ) EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Do not call two times the focusEvent when forcing the focus on the component that fires focusEvent. ACTUAL - Calls focusEvent once again after requestFocus() on the same component after displays a modal JDialog REPRODUCIBILITY : This bug can be reproduced always. ---------- BEGIN SOURCE ---------- import javax.swing.*; import java.awt.*; import java.awt.event.*; public class FocusTest { public static void main(String[] args) { JFrame frame = new JFrame("Focus test"); final JTextField field1 = new JTextField("Test1"); final JTextField field2 = new JTextField("Test2"); field1.addFocusListener(new FocusAdapter(){ public void focusGained(FocusEvent e){} public void focusLost(FocusEvent e){ if( !e.isTemporary() ){ JOptionPane.showMessageDialog(null, "Focus lost in 1"); field1.requestFocus(); //- This makes the focus to be called again } } }); frame.getContentPane().add(field1, BorderLayout.WEST); frame.getContentPane().add(field2, BorderLayout.CENTER); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setBounds(0,0,200,300); frame.show(); } } ---------- END SOURCE ----------
|