Skip to content

Commit daf0213

Browse files
committed
8350924: javax/swing/JMenu/4213634/bug4213634.java fails
Reviewed-by: aivanov, tr
1 parent 6a31aae commit daf0213

File tree

1 file changed

+39
-51
lines changed

1 file changed

+39
-51
lines changed

test/jdk/javax/swing/JMenu/4213634/bug4213634.java

Lines changed: 39 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -21,103 +21,91 @@
2121
* questions.
2222
*/
2323

24-
import java.awt.AWTException;
2524
import java.awt.Robot;
26-
import java.awt.event.ActionEvent;
27-
import java.awt.event.ActionListener;
2825
import java.awt.event.KeyEvent;
29-
import java.lang.reflect.InvocationTargetException;
3026
import javax.swing.JButton;
3127
import javax.swing.JFrame;
3228
import javax.swing.JMenu;
3329
import javax.swing.JMenuBar;
3430
import javax.swing.JMenuItem;
35-
import javax.swing.JTextArea;
3631
import javax.swing.SwingUtilities;
3732

3833
/*
3934
* @test
4035
* @key headful
4136
* @bug 4213634 8017187
42-
* @author Scott Violet
4337
* @library ../../regtesthelpers
4438
* @build Util
39+
* @summary Verifies if Alt+mnemonic char works when
40+
* menu & menuitem have same mnemonic char
4541
* @run main bug4213634
4642
*/
4743

48-
4944
public class bug4213634 {
5045

51-
private JMenu menu;
52-
53-
private JFrame frame;
46+
private static JMenu menu;
47+
private static JFrame frame;
48+
private static Robot robot;
5449

55-
public static void main(String[] args) throws Throwable {
56-
new bug4213634();
57-
}
50+
public static void main(String[] args) throws Exception {
51+
try {
52+
robot = new Robot();
53+
SwingUtilities.invokeAndWait(bug4213634::createAndShowGUI);
5854

59-
bug4213634() throws AWTException, InterruptedException, InvocationTargetException {
60-
SwingUtilities.invokeAndWait(new Runnable() {
61-
@Override
62-
public void run() {
63-
createAndShowGUI();
64-
}
65-
});
66-
67-
test();
55+
robot.waitForIdle();
56+
robot.delay(1000);
57+
test();
58+
} finally {
59+
SwingUtilities.invokeAndWait(() -> {
60+
if (frame != null) {
61+
frame.dispose();
62+
}
63+
});
64+
}
6865
}
6966

70-
public void createAndShowGUI() {
71-
frame = new JFrame("TEST");
67+
public static void createAndShowGUI() {
68+
frame = new JFrame("bug4213634");
7269
JMenuBar mb = new JMenuBar();
7370
menu = mb.add(createMenu("1 - First Menu", true));
7471
mb.add(createMenu("2 - Second Menu", false));
7572
frame.setJMenuBar(mb);
76-
JTextArea ta = new JTextArea("This test dedicated to Nancy and Kathleen, testers and bowlers extraordinaire\n\n\nNo exception means pass.");
77-
frame.getContentPane().add("Center", ta);
7873
JButton button = new JButton("Test");
7974
frame.getContentPane().add("South", button);
80-
frame.setBounds(100, 100, 400, 400);
75+
frame.setSize(300, 300);
76+
frame.setLocationRelativeTo(null);
8177
frame.setVisible(true);
8278
button.requestFocusInWindow();
8379
}
8480

85-
private void test() throws AWTException, InterruptedException, InvocationTargetException {
86-
Robot robot = new Robot();
87-
robot.setAutoDelay(50);
88-
robot.waitForIdle();
89-
81+
private static void test() throws Exception {
9082
Util.hitMnemonics(robot, KeyEvent.VK_1);
9183
robot.waitForIdle();
84+
robot.delay(100);
9285

93-
SwingUtilities.invokeAndWait(new Runnable() {
94-
@Override
95-
public void run() {
96-
if (!menu.isSelected()) {
97-
throw new RuntimeException(
98-
"Failed: Menu didn't remain posted at end of test");
99-
} else {
100-
System.out.println("Test passed!");
101-
frame.dispose();
102-
}
86+
SwingUtilities.invokeAndWait(() -> {
87+
if (!menu.isSelected()) {
88+
throw new RuntimeException(
89+
"Failed: Menu didn't remain posted at end of test");
90+
} else {
91+
System.out.println("Test passed!");
10392
}
10493
});
10594
}
106-
private JMenu createMenu(String str, boolean bFlag) {
95+
96+
private static JMenu createMenu(String str, boolean bFlag) {
10797
JMenuItem menuitem;
10898
JMenu menu = new JMenu(str);
10999
menu.setMnemonic(str.charAt(0));
110100

111-
for(int i = 0; i < 10; i ++) {
101+
for (int i = 0; i < 10; i++) {
112102
menuitem = new JMenuItem("JMenuItem" + i);
113-
menuitem.addActionListener(new ActionListener() {
114-
public void actionPerformed(ActionEvent e) {
115-
throw new RuntimeException(
116-
"Failed: Mnemonic activated");
117-
}
103+
menuitem.addActionListener(e -> {
104+
throw new RuntimeException("Failed: Mnemonic activated");
118105
});
119-
if(bFlag)
106+
if (bFlag) {
120107
menuitem.setMnemonic('0' + i);
108+
}
121109
menu.add(menuitem);
122110
}
123111
return menu;

0 commit comments

Comments
 (0)