Frames | No Frames |
1: /* JPanel.java -- 2: Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package javax.swing; 40: 41: import java.awt.FlowLayout; 42: import java.awt.LayoutManager; 43: 44: import javax.accessibility.Accessible; 45: import javax.accessibility.AccessibleContext; 46: import javax.accessibility.AccessibleRole; 47: import javax.swing.plaf.PanelUI; 48: 49: /** 50: * An instance of JPanel can be added to a panel, frame etc 51: * 52: * @author Ronald Veldema (rveldema@cs.vu.nl) 53: */ 54: public class JPanel extends JComponent implements Accessible 55: { 56: /** 57: * Provides accessibility support for <code>JPanel</code>. 58: * 59: * @author Roman Kennke (roman@kennke.org) 60: */ 61: protected class AccessibleJPanel extends AccessibleJComponent 62: { 63: /** 64: * Creates a new instance of <code>AccessibleJPanel</code>. 65: */ 66: protected AccessibleJPanel() 67: { 68: // Nothing to do here. 69: } 70: 71: /** 72: * Returns the accessible role for <code>JPanel</code>, which is 73: * {@link AccessibleRole#PANEL}. 74: * 75: * @return the accessible role for <code>JPanel</code> 76: */ 77: public AccessibleRole getAccessibleRole() 78: { 79: return AccessibleRole.PANEL; 80: } 81: } 82: 83: /** 84: * Creates a new panel with a new instance of {@link FlowLayout} as the 85: * layout manager and double-buffering enabled. 86: */ 87: public JPanel() 88: { 89: this(new FlowLayout(), true); 90: } 91: 92: /** 93: * Creates a new panel with double-buffering enabled or disabled as 94: * specified. The default layout manager is an instance of 95: * {@link FlowLayout}. 96: * 97: * @param isDoubleBuffered a flag that controls whether or not 98: * double-buffering is enabled. 99: */ 100: public JPanel(boolean isDoubleBuffered) 101: { 102: this(new FlowLayout(), isDoubleBuffered); 103: } 104: 105: /** 106: * Creates a new panel with the specified layout manager. Double-buffering 107: * is enabled by default. 108: * 109: * @param layout the layout manager (<code>null</code> permitted). 110: */ 111: public JPanel(LayoutManager layout) 112: { 113: this(layout, true); 114: } 115: 116: /** 117: * Creates a new panel with the specified layout manager and 118: * double-buffering. 119: * 120: * @param layout the layout manager (<code>null</code> permitted). 121: * @param isDoubleBuffered a flag that controls whether or not 122: * double-buffering is enabled. 123: */ 124: public JPanel(LayoutManager layout, boolean isDoubleBuffered) 125: { 126: setLayout(layout); 127: setOpaque(true); 128: setDoubleBuffered(isDoubleBuffered); 129: updateUI(); 130: } 131: 132: /** 133: * Returns the suffix (<code>"PanelUI"</code> in this case) used to 134: * determine the class name for a UI delegate that can provide the look and 135: * feel for a <code>JPanel</code>. 136: * 137: * @return <code>"PanelUI"</code>. 138: */ 139: public String getUIClassID() 140: { 141: return "PanelUI"; 142: } 143: 144: /** 145: * Sets the UI delegate for the <code>JPanel</code> component. 146: * 147: * @param ui the UI delegate. 148: * 149: * @since 1.4 150: * @see #getUI() 151: */ 152: public void setUI(PanelUI ui) 153: { 154: super.setUI(ui); 155: } 156: 157: /** 158: * Returns the UI delegate for the <code>JPanel</code> component. 159: * 160: * @return The UI delegate. 161: * 162: * @since 1.4 163: * @see #setUI(PanelUI) 164: */ 165: public PanelUI getUI() 166: { 167: return (PanelUI) ui; 168: } 169: 170: /** 171: * Sets this panel's UI delegate to the default (obtained from the 172: * {@link UIManager}) for the current look and feel. 173: */ 174: public void updateUI() 175: { 176: setUI((PanelUI) UIManager.getUI(this)); 177: } 178: 179: /** 180: * Returns the object that provides accessibility features for this 181: * <code>JPanel</code> component. 182: * 183: * @return The accessible context (an instance of {@link AccessibleJPanel}). 184: */ 185: public AccessibleContext getAccessibleContext() 186: { 187: if (accessibleContext == null) 188: accessibleContext = new AccessibleJPanel(); 189: return accessibleContext; 190: } 191: 192: /** 193: * Returns an implementation-dependent string describing the attributes of 194: * this <code>JPanel</code>. 195: * 196: * @return A string describing the attributes of this <code>JPanel</code> 197: * (never <code>null</code>). 198: */ 199: protected String paramString() 200: { 201: return super.paramString(); 202: } 203: }