Skip to content

Commit e09d2e2

Browse files
manukumarvsmrserb
authored andcommitted
8288471: java/awt/ScrollPane/bug8077409Test.java is unstable and fails intermittently in CI
Reviewed-by: abhiscxk, serb
1 parent 64b58f6 commit e09d2e2

File tree

1 file changed

+58
-75
lines changed

1 file changed

+58
-75
lines changed
Lines changed: 58 additions & 75 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
@@ -26,92 +26,75 @@
2626
* @key headful
2727
* @bug 8077409
2828
* @summary Drawing deviates when validate() is invoked on java.awt.ScrollPane
29-
3029
* @run main bug8077409Test
3130
*/
3231

33-
34-
import java.awt.*;
35-
import java.awt.event.*;
32+
import java.awt.AWTException;
33+
import java.awt.BorderLayout;
34+
import java.awt.Canvas;
35+
import java.awt.Color;
36+
import java.awt.Dimension;
37+
import java.awt.Frame;
38+
import java.awt.Graphics;
39+
import java.awt.Point;
40+
import java.awt.ScrollPane;
41+
import java.awt.event.KeyEvent;
3642

3743
public class bug8077409Test extends Frame {
38-
ScrollPane pane;
39-
MyCanvas myCanvas;
40-
41-
class MyCanvas extends Canvas {
42-
public Dimension getPreferredSize() {
43-
return new Dimension(400, 800);
44+
ScrollPane pane;
45+
MyCanvas myCanvas;
46+
47+
public bug8077409Test() {
48+
super();
49+
setLayout(new BorderLayout());
50+
pane = new ScrollPane();
51+
myCanvas = new MyCanvas();
52+
pane.add(myCanvas);
53+
add(pane, BorderLayout.CENTER);
54+
setSize(320, 480);
4455
}
4556

46-
public void paint(Graphics g) {
47-
g.setColor(Color.BLACK);
48-
g.drawLine(0, 0, 399, 0);
49-
g.setColor(Color.RED);
50-
g.drawLine(0, 1, 399, 1);
51-
g.setColor(Color.BLUE);
52-
g.drawLine(0, 2, 399, 2);
53-
g.setColor(Color.GREEN);
54-
g.drawLine(0, 3, 399, 3);
57+
public static void main(String[] args) throws AWTException, InterruptedException {
58+
final bug8077409Test obj = new bug8077409Test();
59+
try {
60+
obj.setLocationRelativeTo(null);
61+
obj.setVisible(true);
62+
Point scrollPosition = obj.pane.getScrollPosition();
63+
scrollPosition.translate(0, 1);
64+
obj.pane.setScrollPosition(scrollPosition);
65+
int y = obj.pane.getComponent(0).getLocation().y;
66+
obj.pane.validate();
67+
if (y != obj.pane.getComponent(0).getLocation().y) {
68+
throw new RuntimeException("Wrong position of component in ScrollPane");
69+
}
70+
} finally {
71+
obj.dispose();
72+
}
5573
}
5674

57-
}
58-
59-
public bug8077409Test() {
60-
super();
61-
setLayout(new BorderLayout());
62-
pane = new ScrollPane();
63-
64-
myCanvas = new MyCanvas();
65-
pane.add(myCanvas);
66-
67-
add(pane, BorderLayout.CENTER);
68-
setSize(320, 480);
69-
70-
}
71-
72-
@Override
73-
protected void processKeyEvent(KeyEvent e) {
74-
super.processKeyEvent(e);
75+
@Override
76+
protected void processKeyEvent(KeyEvent e) {
77+
super.processKeyEvent(e);
78+
}
7579

76-
}
80+
class MyCanvas extends Canvas {
81+
@Override
82+
public Dimension getPreferredSize() {
83+
return new Dimension(400, 800);
84+
}
7785

78-
public static void main(String[] args) throws AWTException, InterruptedException {
79-
final bug8077409Test obj = new bug8077409Test();
80-
obj.setVisible(true);
81-
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
82-
@Override
83-
public void eventDispatched(AWTEvent e) {
84-
KeyEvent keyEvent = (KeyEvent) e;
85-
if(keyEvent.getID() == KeyEvent.KEY_RELEASED) {
86-
if (keyEvent.getKeyCode() == KeyEvent.VK_1) {
87-
System.out.println(obj.pane.toString());
88-
System.out.println("obj.myCanvas.pos: " + obj.myCanvas.getBounds());
89-
System.out.println(obj.myCanvas.toString());
90-
} else if (keyEvent.getKeyCode() == KeyEvent.VK_2) {
91-
obj.repaint();
92-
} else if (keyEvent.getKeyCode() == KeyEvent.VK_DOWN) {
93-
Point scrollPosition = obj.pane.getScrollPosition();
94-
scrollPosition.translate(0, 1);
95-
obj.pane.setScrollPosition(scrollPosition);
96-
} else if (keyEvent.getKeyCode() == KeyEvent.VK_UP) {
97-
Point scrollPosition = obj.pane.getScrollPosition();
98-
scrollPosition.translate(0, -1);
99-
obj.pane.setScrollPosition(scrollPosition);
100-
} else if (keyEvent.getKeyCode() == KeyEvent.VK_SPACE) {
101-
obj.pane.validate();
102-
}
103-
}
86+
@Override
87+
public void paint(Graphics g) {
88+
g.setColor(Color.BLACK);
89+
g.drawLine(0, 0, 399, 0);
90+
g.setColor(Color.RED);
91+
g.drawLine(0, 1, 399, 1);
92+
g.setColor(Color.BLUE);
93+
g.drawLine(0, 2, 399, 2);
94+
g.setColor(Color.GREEN);
95+
g.drawLine(0, 3, 399, 3);
10496
}
105-
}, AWTEvent.KEY_EVENT_MASK);
106-
Point scrollPosition = obj.pane.getScrollPosition();
107-
scrollPosition.translate(0, 1);
108-
obj.pane.setScrollPosition(scrollPosition);
10997

110-
int y = obj.pane.getComponent(0).getLocation().y;
111-
obj.pane.validate();
112-
if(y != obj.pane.getComponent(0).getLocation().y){
113-
throw new RuntimeException("Wrong position of component in ScrollPane");
114-
}
115-
}
98+
}
11699

117100
}

0 commit comments

Comments
 (0)