3131import javax .swing .SwingUtilities ;
3232
3333import java .awt .Color ;
34+ import java .awt .Dimension ;
35+ import java .awt .Graphics ;
3436import java .awt .Insets ;
3537import java .awt .Rectangle ;
38+ import java .awt .Toolkit ;
3639import java .awt .image .BufferedImage ;
3740import javax .imageio .ImageIO ;
3841import java .io .File ;
@@ -81,25 +84,35 @@ public void run() {
8184 button .setOpaque (true );
8285 button .setVisible (false );
8386 desktop .add (button );
87+ desktop .setMinimumSize (new Dimension (300 , 300 ));
88+ desktop .setMaximumSize (new Dimension (300 , 300 ));
8489
8590 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 ();
8794 frame .setLocationRelativeTo (null );
8895 frame .setVisible (true );
8996 frame .setDefaultCloseOperation (JFrame .DISPOSE_ON_CLOSE );
9097 }
9198 });
9299
93- robot .delay (1000 );
94100 robot .waitForIdle (1000 );
101+ robot .delay (1000 );
95102
103+ Dimension screenSize = Toolkit .getDefaultToolkit ().getScreenSize ();
104+ Rectangle screen = new Rectangle (0 , 0 , (int ) screenSize .getWidth (), (int ) screenSize .getHeight ());
96105 Rectangle bounds = frame .getBounds ();
97106 Insets insets = frame .getInsets ();
98107 locx = bounds .x + insets .left ;
99108 locy = bounds .y + insets .top ;
100109 frw = bounds .width - insets .left - insets .right ;
101110 frh = bounds .height - insets .top - insets .bottom ;
102111
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 );
103116 imageInit = robot .createScreenCapture (new Rectangle (locx , locy , frw , frh ));
104117
105118 SwingUtilities .invokeAndWait (new Runnable () {
@@ -115,6 +128,7 @@ public void run() {
115128 if (Util .compareBufferedImages (imageInit , imageShow )) {
116129 ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
117130 ImageIO .write (imageShow , "png" , new File ("imageShow.png" ));
131+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
118132 throw new Exception ("Failed to show opaque button" );
119133 }
120134
@@ -133,6 +147,7 @@ public void run() {
133147 if (!Util .compareBufferedImages (imageInit , imageHide )) {
134148 ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
135149 ImageIO .write (imageHide , "png" , new File ("imageHide.png" ));
150+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
136151 throw new Exception ("Failed to hide opaque button" );
137152 }
138153
@@ -160,6 +175,13 @@ public void run() {
160175 robot .waitForIdle (500 );
161176 imageShow = robot .createScreenCapture (new Rectangle (locx , locy , frw , frh ));
162177
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+
163185 SwingUtilities .invokeAndWait (new Runnable () {
164186
165187 @ Override
@@ -168,18 +190,13 @@ public void run() {
168190 }
169191 });
170192
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-
177193 robot .waitForIdle (500 );
178194 imageHide = robot .createScreenCapture (new Rectangle (locx , locy , frw , frh ));
179195
180196 if (!Util .compareBufferedImages (imageInit , imageHide )) {
181197 ImageIO .write (imageInit , "png" , new File ("imageInit.png" ));
182198 ImageIO .write (imageHide , "png" , new File ("imageHide.png" ));
199+ ImageIO .write (fullScreen , "png" , new File ("fullScreenInit.png" ));
183200 throw new Exception ("Failed to hide non-opaque button" );
184201 }
185202 } finally {
0 commit comments