diff --git a/src/share/classes/javax/swing/border/StrokeBorder.java b/src/share/classes/javax/swing/border/StrokeBorder.java index eed8c00aa63a550b2315f4674f1a03781d8dcadc..34e81f024b37ff5e95a54ce57e35d9398d9309b6 100644 --- a/src/share/classes/javax/swing/border/StrokeBorder.java +++ b/src/share/classes/javax/swing/border/StrokeBorder.java @@ -88,6 +88,10 @@ public class StrokeBorder extends AbstractBorder { /** * Paints the border for the specified component * with the specified position and size. + * If the border was not specified with a {@link Paint} object, + * the component's foreground color will be used to render the border. + * If the component's foreground color is not available, + * the default color of the {@link Graphics} object will be used. * * @param c the component for which this border is being painted * @param g the paint graphics @@ -96,7 +100,7 @@ public class StrokeBorder extends AbstractBorder { * @param width the width of the painted border * @param height the height of the painted border * - * @throws NullPointerException if the specified {@code c} or {@code g} are {@code null} + * @throws NullPointerException if the specified {@code g} is {@code null} */ @Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { @@ -106,7 +110,7 @@ public class StrokeBorder extends AbstractBorder { if (g instanceof Graphics2D) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(this.stroke); - g2d.setPaint(this.paint != null ? this.paint : c.getForeground()); + g2d.setPaint(this.paint != null ? this.paint : c == null ? null : c.getForeground()); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.draw(new Rectangle2D.Float(x + size / 2, y + size / 2, width - size, height - size));