bug4529206.java revision 11018:66682f651425
1/* 2 * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26/* @test 27 @bug 4529206 28 @summary JToolBar - setFloating does not work correctly 29 @author Konstantin Eremin 30 @run main bug4529206 31*/ 32 33import javax.swing.*; 34import java.awt.*; 35import java.awt.event.ActionEvent; 36import java.awt.event.ActionListener; 37 38public class bug4529206 extends JFrame { 39 static JFrame frame; 40 static JToolBar jToolBar1; 41 public bug4529206() { 42 setDefaultCloseOperation(EXIT_ON_CLOSE); 43 JPanel jPanFrame = (JPanel) this.getContentPane(); 44 jPanFrame.setLayout(new BorderLayout()); 45 this.setSize(new Dimension(200, 100)); 46 this.setLocation(125, 75); 47 this.setTitle("Test Floating Toolbar"); 48 jToolBar1 = new JToolBar(); 49 JButton jButton1 = new JButton("Float"); 50 jPanFrame.add(jToolBar1, BorderLayout.NORTH); 51 JTextField tf = new JTextField("click here"); 52 jPanFrame.add(tf); 53 jToolBar1.add(jButton1, null); 54 jButton1.addActionListener(new ActionListener() { 55 public void actionPerformed(ActionEvent e) { 56 buttonPressed(e); 57 } 58 }); 59 makeToolbarFloat(); 60 setVisible(true); 61 } 62 63 private void makeToolbarFloat() { 64 javax.swing.plaf.basic.BasicToolBarUI ui = (javax.swing.plaf.basic.BasicToolBarUI) jToolBar1.getUI(); 65 if (!ui.isFloating()) { 66 ui.setFloatingLocation(100, 100); 67 ui.setFloating(true, jToolBar1.getLocation()); 68 } 69 } 70 71 private void buttonPressed(ActionEvent e) { 72 makeToolbarFloat(); 73 } 74 75 public static void main(String[] args) throws Exception { 76 SwingUtilities.invokeAndWait(new Runnable() { 77 public void run() { 78 frame = new bug4529206(); 79 } 80 }); 81 Robot robot = new Robot(); 82 robot.waitForIdle(); 83 SwingUtilities.invokeAndWait(new Runnable() { 84 public void run() { 85 if (frame.isFocused()) { 86 throw (new RuntimeException("setFloating does not work correctly")); 87 } 88 } 89 }); 90 } 91} 92