1 /* 2 @test 3 @bug 6741526 4 @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components 5 @library ../../regtesthelpers 6 @build Sysout 7 @author Andrei Dmitriev : area=awt-focus 8 @run main DefaultPolicyChange_Swing 9 */ 10 11 import java.awt.*; 12 import javax.swing.*; 13 import javax.swing.table.DefaultTableModel; 14 import test.java.awt.regtesthelpers.Sysout; 15 16 public class DefaultPolicyChange_Swing { 17 public static void main(String []s) { 18 EventQueue.invokeLater(new Runnable(){ 19 public void run (){ 20 DefaultPolicyChange_Swing.runTestSwing(); 21 } 22 }); 23 } 24 private static void runTestSwing(){ 25 KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); 26 FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy(); 27 ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy(); 28 29 30 JFrame jf = new JFrame("Test1"); 31 JWindow jw = new JWindow(jf); 32 JDialog jd = new JDialog(jf); 33 JPanel jp1 = new JPanel(); 34 JButton jb1 = new JButton("jb1"); 35 JTable jt1 = new JTable(new DefaultTableModel()); 36 37 jf.add(jb1); 38 jf.add(jt1); 39 jf.add(jp1); 40 System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy()); 41 System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy()); 42 System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy()); 43 44 if (!(jf.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) || 45 !(jw.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) || 46 !(jd.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy)) 47 { 48 throw new RuntimeException("Failure! Swing toplevel must have LayoutFocusTraversalPolicy installed"); 49 } 50 51 jf.setVisible(true); 52 53 System.out.println("Now will set another policy."); 54 currentKFM.setDefaultFocusTraversalPolicy(newFTP); 55 56 FocusTraversalPolicy resultFTP = jw.getFocusTraversalPolicy(); 57 58 System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy()); 59 System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy()); 60 System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy()); 61 62 if (!resultFTP.equals(defaultFTP)) { 63 Sysout.println("Failure! FocusTraversalPolicy should not change"); 64 Sysout.println("Was: " + defaultFTP); 65 Sysout.println("Become: " + resultFTP); 66 throw new RuntimeException("Failure! FocusTraversalPolicy should not change"); 67 } 68 } 69 }