mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-14 20:35:09 +00:00
6875153: JLayer.isOptimizedDrawingEnabled() throws NPE for null glass pane set
Reviewed-by: rupashka
This commit is contained in:
parent
4e092f7b46
commit
3ef90fd6fd
@ -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)
|
||||
|
||||
47
jdk/test/javax/swing/JLayer/6875153/bug6875153.java
Normal file
47
jdk/test/javax/swing/JLayer/6875153/bug6875153.java
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* 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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user