From e1b06eac722ea19ed33fbd15e763ca983aab34f2 Mon Sep 17 00:00:00 2001 From: Prasanta Sadhukhan Date: Mon, 1 May 2023 04:45:38 +0000 Subject: [PATCH] 8305780: javax/swing/JTable/7068740/bug7068740.java fails on Ubunutu 20.04 Reviewed-by: serb, tr --- .../swing/JTable/7068740/bug7068740.java | 116 +++++++++--------- 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/test/jdk/javax/swing/JTable/7068740/bug7068740.java b/test/jdk/javax/swing/JTable/7068740/bug7068740.java index b03768400fc9b..17ed7d0918367 100644 --- a/test/jdk/javax/swing/JTable/7068740/bug7068740.java +++ b/test/jdk/javax/swing/JTable/7068740/bug7068740.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 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 @@ -26,79 +26,68 @@ * @key headful * @bug 7068740 * @summary JTable wrapped in JLayer can't use PGUP/PGDOWN keys - * @author Vladislav Karnaukhov * @run main bug7068740 */ -import javax.swing.*; +import java.awt.Robot; +import java.awt.event.KeyEvent; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLayer; +import javax.swing.JScrollPane; +import javax.swing.JTable; import javax.swing.plaf.LayerUI; import javax.swing.plaf.metal.MetalLookAndFeel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; import javax.swing.table.DefaultTableModel; -import java.awt.*; -import java.awt.event.KeyEvent; -import java.lang.reflect.InvocationTargetException; import java.util.concurrent.atomic.AtomicInteger; -public class bug7068740 extends JFrame { +public class bug7068740 { private static Robot robot = null; private static JTable table = null; + private static JFrame frame; - bug7068740() { - super(); - setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - - DefaultTableModel model = new DefaultTableModel() { - @Override - public int getRowCount() { - return 20; - } - - @Override - public int getColumnCount() { - return 2; - } + private static void setUp() throws Exception { + if (robot == null) { + robot = new Robot(); + robot.setAutoDelay(100); + } + SwingUtilities.invokeAndWait(new Runnable() { @Override - public Object getValueAt(int row, int column) { - return "(" + row + "," + column + ")"; - } - }; - - table = new JTable(model); - table.setRowSelectionInterval(0, 0); - LayerUI layerUI = new LayerUI<>(); - JLayer layer = new JLayer<>(table, layerUI); - JScrollPane scrollPane = new JScrollPane(layer); - add(scrollPane); - pack(); - setLocationRelativeTo(null); - } - - private static void setUp() { - try { - if (robot == null) { - robot = new Robot(); - robot.setAutoDelay(50); + public void run() { + DefaultTableModel model = new DefaultTableModel() { + @Override + public int getRowCount() { + return 20; + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public Object getValueAt(int row, int column) { + return "(" + row + "," + column + ")"; + } + }; + + table = new JTable(model); + table.setRowSelectionInterval(0, 0); + LayerUI layerUI = new LayerUI<>(); + JLayer layer = new JLayer<>(table, layerUI); + JScrollPane scrollPane = new JScrollPane(layer); + frame = new JFrame(); + frame.add(scrollPane); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); } - - SwingUtilities.invokeAndWait(new Runnable() { - @Override - public void run() { - bug7068740 test = new bug7068740(); - test.setVisible(true); - } - }); - } catch (InterruptedException e) { - e.printStackTrace(); - throw new RuntimeException("Test failed"); - } catch (InvocationTargetException e) { - e.printStackTrace(); - throw new RuntimeException("Test failed"); - } catch (AWTException e) { - e.printStackTrace(); - throw new RuntimeException("Test failed"); - } + }); } private static int getSelectedRow() throws Exception { @@ -123,6 +112,7 @@ private static void doTest() throws Exception { throw new RuntimeException("Test failed"); } + robot.delay(1000); robot.keyPress(KeyEvent.VK_PAGE_UP); robot.keyRelease(KeyEvent.VK_PAGE_UP); robot.waitForIdle(); @@ -135,10 +125,18 @@ public static void main(String[] args) throws Exception { try { UIManager.setLookAndFeel(new MetalLookAndFeel()); setUp(); + robot.waitForIdle(); + robot.delay(1000); doTest(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); throw new RuntimeException("Test failed"); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); } } }