# HG changeset patch # User rupashka # Date 1328277459 -14400 # Node ID cb8e532bd99640be5662ff1fa041fc72fb487feb # Parent 38e5838650a65dab9ae06799cf12767970592749 7141573: JProgressBar resize exception, if setStringPainted in Windows LAF Reviewed-by: malenkov diff -r 38e5838650a6 -r cb8e532bd996 jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java --- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java Thu Feb 02 17:49:10 2012 +0400 +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java Fri Feb 03 17:57:39 2012 +0400 @@ -137,6 +137,11 @@ g.setColor(progressBar.getForeground()); barRectHeight -= 2; barRectWidth -= 2; + + if (barRectWidth <= 0 || barRectHeight <= 0) { + return; + } + Graphics2D g2 = (Graphics2D)g; g2.setStroke(new BasicStroke((float)(vertical ? barRectWidth : barRectHeight), BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); diff -r 38e5838650a6 -r cb8e532bd996 jdk/test/javax/swing/JProgressBar/7141573/bug7141573.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/swing/JProgressBar/7141573/bug7141573.java Fri Feb 03 17:57:39 2012 +0400 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2012, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 7141573 + @summary JProgressBar resize exception, if setStringPainted in Windows LAF + @author Pavel Porvatov +*/ + +import javax.swing.*; +import java.awt.image.BufferedImage; + +public class bug7141573 { + public static void main(String[] args) throws Exception { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + } catch (Exception e) { + System.out.println("WindowsLookAndFeel is not supported. The test bug7141573 is skipped."); + + return; + } + + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB); + + JProgressBar bar = new JProgressBar(); + + bar.setStringPainted(true); + + bar.setSize(100, 1); + bar.paint(image.getGraphics()); + + bar.setSize(1, 100); + bar.paint(image.getGraphics()); + + System.out.println("The test bug7141573 is passed."); + } + }); + } +}