提交 64e73098 编写于 作者: A alexp

6875153: JLayer.isOptimizedDrawingEnabled() throws NPE for null glass pane set

Reviewed-by: rupashka
上级 11fe97e5
......@@ -178,7 +178,7 @@ public final class JLayer<V extends Component>
* @return the {@code JLayer}'s view component
* or {@code null} if none exists
*
* @see #setView(V)
* @see #setView(Component)
*/
public V getView() {
return view;
......@@ -279,7 +279,7 @@ public final class JLayer<V extends Component>
* @throws UnsupportedOperationException this method is not supported
*
* @see #setView(Component)
* @see #setGlassPane(Component)
* @see #setGlassPane(JPanel)
*/
protected void addImpl(Component comp, Object constraints, int index) {
throw new UnsupportedOperationException(
......@@ -339,7 +339,7 @@ public final class JLayer<V extends Component>
* @return false if {@code JLayer}'s {@code glassPane} is visible
*/
public boolean isOptimizedDrawingEnabled() {
return !glassPane.isVisible();
return glassPane == null || !glassPane.isVisible();
}
/**
......@@ -560,14 +560,20 @@ public final class JLayer<V extends Component>
}
}
/**
* {@inheritDoc}
*/
public void addNotify() {
eventController.updateAWTEventListener(0, eventMask);
super.addNotify();
eventController.updateAWTEventListener(0, eventMask);
}
/**
* {@inheritDoc}
*/
public void removeNotify() {
eventController.updateAWTEventListener(eventMask, 0);
super.removeNotify();
eventController.updateAWTEventListener(eventMask, 0);
}
/**
......
......@@ -222,6 +222,7 @@ public class LayerUI<V extends Component>
* Returns an array of all the listeners which have been associated
* with the named property.
*
* @param propertyName The name of the property being listened to
* @return all of the {@code PropertyChangeListener}s associated with
* the named property; if no such listeners have been added or
* if {@code propertyName} is {@code null}, an empty
......@@ -262,6 +263,7 @@ public class LayerUI<V extends Component>
/**
* Returns the preferred size of the viewport for a view component.
*
* @param l the {@code JLayer} component where this UI delegate is being installed
* @return the preferred size of the viewport for a view component
* @see Scrollable#getPreferredScrollableViewportSize()
*/
......@@ -277,6 +279,10 @@ public class LayerUI<V extends Component>
* that display logical rows or columns in order to completely expose
* one block of rows or columns, depending on the value of orientation.
*
* @param l the {@code JLayer} component where this UI delegate is being installed
* @param visibleRect The view area visible within the viewport
* @param orientation Either SwingConstants.VERTICAL or SwingConstants.HORIZONTAL.
* @param direction Less than zero to scroll up/left, greater than zero for down/right.
* @return the "block" increment for scrolling in the specified direction
* @see Scrollable#getScrollableBlockIncrement(Rectangle, int, int)
*/
......@@ -296,6 +302,7 @@ public class LayerUI<V extends Component>
* determine the height of the layer, unless the preferred height
* of the layer is smaller than the height of the viewport.
*
* @param l the {@code JLayer} component where this UI delegate is being installed
* @return whether the layer should track the height of the viewport
* @see Scrollable#getScrollableTracksViewportHeight()
*/
......@@ -311,6 +318,7 @@ public class LayerUI<V extends Component>
* determine the width of the layer, unless the preferred width
* of the layer is smaller than the width of the viewport.
*
* @param l the {@code JLayer} component where this UI delegate is being installed
* @return whether the layer should track the width of the viewport
* @see Scrollable
* @see LayerUI#getScrollableTracksViewportWidth(JLayer)
......@@ -332,6 +340,10 @@ public class LayerUI<V extends Component>
* Scrolling containers, like JScrollPane, will use this method
* each time the user requests a unit scroll.
*
* @param l the {@code JLayer} component where this UI delegate is being installed
* @param visibleRect The view area visible within the viewport
* @param orientation Either SwingConstants.VERTICAL or SwingConstants.HORIZONTAL.
* @param direction Less than zero to scroll up/left, greater than zero for down/right.
* @return The "unit" increment for scrolling in the specified direction.
* This value should always be positive.
* @see Scrollable#getScrollableUnitIncrement(Rectangle, int, int)
......
/*
* Copyright 2009 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/* @test
* @bug 6875153
* @summary JLayer.isOptimizedDrawingEnabled() throws NPE for null glass pane set
* @author Alexander Potochkin
*/
import javax.swing.*;
public class bug6875153 {
private static void createGui() {
JLayer layer = new JLayer();
layer.setGlassPane(null);
layer.isOptimizedDrawingEnabled();
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
bug6875153.createGui();
}
});
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册