31
31
import javax .swing .SwingUtilities ;
32
32
33
33
import java .awt .Color ;
34
+ import java .awt .Dimension ;
35
+ import java .awt .Graphics ;
34
36
import java .awt .Insets ;
35
37
import java .awt .Rectangle ;
38
+ import java .awt .Toolkit ;
36
39
import java .awt .image .BufferedImage ;
37
40
import javax .imageio .ImageIO ;
38
41
import java .io .File ;
@@ -81,25 +84,35 @@ public void run() {
81
84
button .setOpaque (true );
82
85
button .setVisible (false );
83
86
desktop .add (button );
87
+ desktop .setMinimumSize (new Dimension (300 , 300 ));
88
+ desktop .setMaximumSize (new Dimension (300 , 300 ));
84
89
85
90
frame .setContentPane (desktop );
86
- frame .setSize (300 , 300 );
91
+ frame .setMinimumSize (new Dimension (350 , 350 ));
92
+ frame .setMaximumSize (new Dimension (350 , 350 ));
93
+ frame .pack ();
87
94
frame .setLocationRelativeTo (null );
88
95
frame .setVisible (true );
89
96
frame .setDefaultCloseOperation (JFrame .DISPOSE_ON_CLOSE );
90
97
}
91
98
});
92
99
93
- robot .delay (1000 );
94
100
robot .waitForIdle (1000 );
101
+ robot .delay (1000 );
95
102
103
+ Dimension screenSize = Toolkit .getDefaultToolkit ().getScreenSize ();
104
+ Rectangle screen = new Rectangle (0 , 0 , (int ) screenSize .getWidth (), (int ) screenSize .getHeight ());
96
105
Rectangle bounds = frame .getBounds ();
97
106
Insets insets = frame .getInsets ();
98
107
locx = bounds .x + insets .left ;
99
108
locy = bounds .y + insets .top ;
100
109
frw = bounds .width - insets .left - insets .right ;
101
110
frh = bounds .height - insets .top - insets .bottom ;
102
111
112
+ BufferedImage fullScreen = robot .createScreenCapture (screen );
113
+ Graphics g = fullScreen .getGraphics ();
114
+ g .setColor (Color .RED );
115
+ g .drawRect (locx - 1 , locy - 1 , frw + 1 , frh + 1 );
103
116
imageInit = robot .createScreenCapture (new Rectangle (locx , locy , frw , frh ));
104
117
105
118
SwingUtilities .invokeAndWait (new Runnable () {
@@ -115,6 +128,7 @@ public void run() {
115
128
if (Util .compareBufferedImages (imageInit , imageShow )) {
116
129
ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
117
130
ImageIO .write (imageShow , "png" , new File ("imageShow.png" ));
131
+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
118
132
throw new Exception ("Failed to show opaque button" );
119
133
}
120
134
@@ -133,6 +147,7 @@ public void run() {
133
147
if (!Util .compareBufferedImages (imageInit , imageHide )) {
134
148
ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
135
149
ImageIO .write (imageHide , "png" , new File ("imageHide.png" ));
150
+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
136
151
throw new Exception ("Failed to hide opaque button" );
137
152
}
138
153
@@ -160,6 +175,13 @@ public void run() {
160
175
robot .waitForIdle (500 );
161
176
imageShow = robot .createScreenCapture (new Rectangle (locx , locy , frw , frh ));
162
177
178
+ if (Util .compareBufferedImages (imageInit , imageShow )) {
179
+ ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
180
+ ImageIO .write (imageShow , "png" , new File ("imageShow.png" ));
181
+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
182
+ throw new Exception ("Failed to show non-opaque button" );
183
+ }
184
+
163
185
SwingUtilities .invokeAndWait (new Runnable () {
164
186
165
187
@ Override
@@ -168,18 +190,13 @@ public void run() {
168
190
}
169
191
});
170
192
171
- if (Util .compareBufferedImages (imageInit , imageShow )) {
172
- ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
173
- ImageIO .write (imageShow , "png" , new File ("imageShow.png" ));
174
- throw new Exception ("Failed to show non-opaque button" );
175
- }
176
-
177
193
robot .waitForIdle (500 );
178
194
imageHide = robot .createScreenCapture (new Rectangle (locx , locy , frw , frh ));
179
195
180
196
if (!Util .compareBufferedImages (imageInit , imageHide )) {
181
197
ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
182
198
ImageIO .write (imageHide , "png" , new File ("imageHide.png" ));
199
+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
183
200
throw new Exception ("Failed to hide non-opaque button" );
184
201
}
185
202
} finally {
0 commit comments