-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reviewed-by: abhiscxk, prr
- Loading branch information
Alisen Chung
committed
Sep 22, 2023
1 parent
9aaac2e
commit e015e6c
Showing
4 changed files
with
449 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
/* | ||
* Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. | ||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
* | ||
* This code is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 only, as | ||
* published by the Free Software Foundation. | ||
* | ||
* This code is distributed in the hope that it will be useful, but WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
* version 2 for more details (a copy is included in the LICENSE file that | ||
* accompanied this code). | ||
* | ||
* You should have received a copy of the GNU General Public License version | ||
* 2 along with this work; if not, write to the Free Software Foundation, | ||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
* | ||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | ||
* or visit www.oracle.com if you need additional information or have any | ||
* questions. | ||
*/ | ||
|
||
/* | ||
* @test | ||
* @bug 4765272 | ||
* @summary REGRESSION: IAE: focusCycleRoot not focus cyle root of a Component | ||
* @key headful | ||
*/ | ||
|
||
import java.awt.Component; | ||
import java.awt.Container; | ||
import java.awt.FlowLayout; | ||
import java.awt.FocusTraversalPolicy; | ||
import java.awt.Robot; | ||
import java.awt.event.FocusAdapter; | ||
import java.awt.event.FocusEvent; | ||
import javax.swing.JButton; | ||
import javax.swing.JFrame; | ||
import javax.swing.JPanel; | ||
import javax.swing.SwingUtilities; | ||
|
||
public class bug4765272 { | ||
static boolean focusGained = false; | ||
static JFrame f; | ||
static JButton bt1; | ||
|
||
public static void main(String[] args) throws Exception { | ||
try { | ||
SwingUtilities.invokeAndWait(() -> { | ||
f = new JFrame("bug4765272"); | ||
bt1 = new JButton("Button 1"); | ||
JButton bt2 = new JButton("Button 2"); | ||
|
||
JPanel p = new JPanel(); | ||
p.setLayout(new FlowLayout()); | ||
p.add(bt1); | ||
p.add(bt2); | ||
f.getContentPane().add(p); | ||
|
||
FocusTraversalPolicy policy = new FocusTraversalPolicy() { | ||
@Override | ||
public Component getComponentAfter(Container aContainer, Component aComponent) { | ||
if (aComponent == bt1) { | ||
return bt2; | ||
} | ||
return bt1; | ||
} | ||
|
||
@Override | ||
public Component getComponentBefore(Container aContainer, Component aComponent) { | ||
if (aComponent == bt1) { | ||
return bt2; | ||
} | ||
return bt1; | ||
} | ||
|
||
@Override | ||
public Component getFirstComponent(Container aContainer) { | ||
return bt1; | ||
} | ||
|
||
@Override | ||
public Component getLastComponent(Container aContainer) { | ||
return bt2; | ||
} | ||
|
||
@Override | ||
public Component getDefaultComponent(Container aContainer) { | ||
return bt1; | ||
} | ||
}; | ||
|
||
bt1.addFocusListener(new FocusAdapter() { | ||
public void focusGained(FocusEvent e) { | ||
p.removeAll(); | ||
synchronized (this) { | ||
focusGained = true; | ||
this.notifyAll(); | ||
} | ||
} | ||
}); | ||
|
||
f.setLocationRelativeTo(null); | ||
f.setVisible(true); | ||
}); | ||
|
||
Robot r = new Robot(); | ||
r.waitForIdle(); | ||
r.delay(1000); | ||
|
||
SwingUtilities.invokeAndWait(() -> { | ||
bt1.requestFocus(); | ||
try { | ||
if (!focusGained) { | ||
Thread.sleep(5000); | ||
} | ||
} catch (Exception ex) { | ||
ex.printStackTrace(); | ||
} | ||
}); | ||
} finally { | ||
SwingUtilities.invokeAndWait(() -> { | ||
if (f != null) { | ||
f.dispose(); | ||
} | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/* | ||
* Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. | ||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
* | ||
* This code is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 only, as | ||
* published by the Free Software Foundation. | ||
* | ||
* This code is distributed in the hope that it will be useful, but WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
* version 2 for more details (a copy is included in the LICENSE file that | ||
* accompanied this code). | ||
* | ||
* You should have received a copy of the GNU General Public License version | ||
* 2 along with this work; if not, write to the Free Software Foundation, | ||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
* | ||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | ||
* or visit www.oracle.com if you need additional information or have any | ||
* questions. | ||
*/ | ||
|
||
/* | ||
* @test | ||
* @bug 4979794 | ||
* @summary A component is sometimes the next component for itself in focus policy. | ||
* @key headful | ||
*/ | ||
|
||
import java.awt.Component; | ||
import java.awt.Container; | ||
import java.awt.FocusTraversalPolicy; | ||
import java.awt.Robot; | ||
import javax.swing.JButton; | ||
import javax.swing.JFrame; | ||
import javax.swing.JPanel; | ||
import javax.swing.SwingUtilities; | ||
|
||
public class bug4979794 { | ||
static JFrame fr; | ||
static JButton btn1; | ||
static JButton btn2; | ||
|
||
public static void main(String[] args) throws Exception { | ||
try { | ||
SwingUtilities.invokeAndWait(() -> { | ||
fr = new JFrame("bug4979794"); | ||
fr.getContentPane().setLayout(null); | ||
|
||
JPanel p = new JPanel(); | ||
p.setLayout(null); | ||
fr.getContentPane().add(p); | ||
|
||
btn1 = new JButton("Button 1"); | ||
btn1.setBounds(0, 0, 200, 200); | ||
|
||
btn2 = new JButton("Button 2"); | ||
btn2.setBounds(0, 0, 200, 200); | ||
|
||
p.add(btn1); | ||
p.add(btn2); | ||
p.setSize(200, 200); | ||
|
||
fr.setLocationRelativeTo(null); | ||
fr.setSize(300, 300); | ||
fr.setVisible(true); | ||
}); | ||
|
||
Robot r = new Robot(); | ||
r.waitForIdle(); | ||
r.delay(1000); | ||
|
||
SwingUtilities.invokeAndWait(() -> { | ||
Container root = btn1.getFocusCycleRootAncestor(); | ||
FocusTraversalPolicy policy = root.getFocusTraversalPolicy(); | ||
Component next1 = policy.getComponentAfter(fr, btn1); | ||
Component next2 = policy.getComponentAfter(fr, btn2); | ||
if (next1 == next2) { | ||
throw new RuntimeException("btn1 and btn2 have the same next Component."); | ||
} | ||
}); | ||
} finally { | ||
SwingUtilities.invokeAndWait(() -> { | ||
if (fr != null) { | ||
fr.dispose(); | ||
} | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
/* | ||
* Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. | ||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
* | ||
* This code is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 only, as | ||
* published by the Free Software Foundation. | ||
* | ||
* This code is distributed in the hope that it will be useful, but WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
* version 2 for more details (a copy is included in the LICENSE file that | ||
* accompanied this code). | ||
* | ||
* You should have received a copy of the GNU General Public License version | ||
* 2 along with this work; if not, write to the Free Software Foundation, | ||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
* | ||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | ||
* or visit www.oracle.com if you need additional information or have any | ||
* questions. | ||
*/ | ||
|
||
/* | ||
* @test | ||
* @bug 4907772 | ||
* @summary 1.4 REGRESSION: JPanel responds to mouse clicks on overlapping JPanel | ||
* @key headful | ||
*/ | ||
|
||
import java.awt.Component; | ||
import java.awt.Container; | ||
import java.awt.FocusTraversalPolicy; | ||
import java.awt.Robot; | ||
import javax.swing.JButton; | ||
import javax.swing.JFrame; | ||
import javax.swing.JPanel; | ||
import javax.swing.SwingUtilities; | ||
|
||
public class bug4907772 { | ||
static JFrame fr; | ||
static JButton btn1; | ||
static JButton btn2; | ||
|
||
public static void main(String[] args) throws Exception { | ||
try { | ||
SwingUtilities.invokeAndWait(() -> { | ||
fr = new JFrame("bug4907772"); | ||
fr.getContentPane().setLayout(null); | ||
|
||
JPanel p = new JPanel(); | ||
p.setLayout(null); | ||
fr.getContentPane().add(p); | ||
|
||
btn1 = new JButton("Button 1"); | ||
btn1.setBounds(0, 0, 200, 200); | ||
|
||
btn2 = new JButton("Button 2"); | ||
btn2.setBounds(0, 0, 200, 200); | ||
|
||
p.add(btn1); | ||
p.add(btn2); | ||
|
||
fr.setLocationRelativeTo(null); | ||
fr.pack(); | ||
fr.setVisible(true); | ||
}); | ||
|
||
Robot r = new Robot(); | ||
r.waitForIdle(); | ||
r.delay(1000); | ||
|
||
SwingUtilities.invokeAndWait(() -> { | ||
Container root = btn1.getFocusCycleRootAncestor(); | ||
FocusTraversalPolicy policy = root.getFocusTraversalPolicy(); | ||
Component initial = policy.getInitialComponent(fr); | ||
if (initial == btn2) { | ||
throw new RuntimeException("The underlying button shouldn't be the initial component of FCR"); | ||
} | ||
}); | ||
} finally { | ||
SwingUtilities.invokeAndWait(() -> { | ||
if (fr != null) { | ||
fr.dispose(); | ||
} | ||
}); | ||
} | ||
} | ||
} |
Oops, something went wrong.
e015e6c
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review
Issues