📄 jsplitpane.java
字号:
/* JSplitPane.java -- Copyright (C) 2004 Free Software Foundation, Inc.This file is part of GNU Classpath.GNU Classpath is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU Classpath is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING. If not, write to theFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA02110-1301 USA.Linking this library statically or dynamically with other modules ismaking a combined work based on this library. Thus, the terms andconditions of the GNU General Public License cover the wholecombination.As a special exception, the copyright holders of this library give youpermission to link this library with independent modules to produce anexecutable, regardless of the license terms of these independentmodules, and to copy and distribute the resulting executable underterms of your choice, provided that you also meet, for each linkedindependent module, the terms and conditions of the license of thatmodule. An independent module is a module which is not derived fromor based on this library. If you modify this library, you may extendthis exception to your version of the library, but you are notobligated to do so. If you do not wish to do so, delete thisexception statement from your version. */package javax.swing;import java.awt.Component;import java.awt.Graphics;import javax.accessibility.Accessible;import javax.accessibility.AccessibleContext;import javax.accessibility.AccessibleRole;import javax.accessibility.AccessibleStateSet;import javax.accessibility.AccessibleValue;import javax.swing.plaf.SplitPaneUI;/** * This class implements JSplitPane. It is used to divide two components. By * dragging the SplitPane's divider, the user can resize the two components. * Note that the divider cannot resize a component to smaller than it's * minimum size. */public class JSplitPane extends JComponent implements Accessible{ /** * DOCUMENT ME! */ // FIXME: This inner class is a complete stub and must be implemented // properly. protected class AccessibleJSplitPane extends JComponent.AccessibleJComponent implements AccessibleValue { private static final long serialVersionUID = -1788116871416305366L; /** * Creates a new AccessibleJSplitPane object. */ protected AccessibleJSplitPane() { // Nothing to do here. } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public AccessibleStateSet getAccessibleStateSet() { return null; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public AccessibleRole getAccessibleRole() { return null; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public AccessibleValue getAccessibleValue() { return null; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Number getCurrentAccessibleValue() { return null; } /** * DOCUMENT ME! * * @param value0 DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean setCurrentAccessibleValue(Number value0) { return false; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Number getMinimumAccessibleValue() { return null; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Number getMaximumAccessibleValue() { return null; } } private static final long serialVersionUID = -5634142046175988380L; /** The constraints string used to add components to the bottom. */ public static final String BOTTOM = "bottom"; /** The property fired when the continuousLayout property changes. */ public static final String CONTINUOUS_LAYOUT_PROPERTY = "continuousLayout"; /** The property fired when the divider property changes. */ public static final String DIVIDER = "divider"; /** The property fired when the divider location property changes. */ public static final String DIVIDER_LOCATION_PROPERTY = "dividerLocation"; /** The property fired when the divider size property changes. */ public static final String DIVIDER_SIZE_PROPERTY = "dividerSize"; /** * The value of the orientation when the components are split horizontally. */ public static final int HORIZONTAL_SPLIT = 1; /** The property fired when the last divider location property changes. */ public static final String LAST_DIVIDER_LOCATION_PROPERTY = "lastDividerLocation"; /** The constraints string used to add components to the left. */ public static final String LEFT = "left"; /** The property fired when the one touch expandable property changes. */ public static final String ONE_TOUCH_EXPANDABLE_PROPERTY = "oneTouchExpandable"; /** The property fired when the orientation property changes. */ public static final String ORIENTATION_PROPERTY = "orientation"; /** The property fired when the resize weight property changes. */ public static final String RESIZE_WEIGHT_PROPERTY = "resizeWeight"; /** The constraints string used to add components to the right. */ public static final String RIGHT = "right"; /** The constraints string used to add components to the top. */ public static final String TOP = "top"; /** The value of the orientation when the components are split vertically. */ public static final int VERTICAL_SPLIT = 0; /** Whether the JSplitPane uses continuous layout. */ protected boolean continuousLayout; /** Whether the JSplitPane uses one touch expandable buttons. */ protected boolean oneTouchExpandable = false; // This is the master dividerSize variable and sets the // BasicSplitPaneDivider one accordingly /** The size of the divider. */ protected int dividerSize = 10; /** The last location of the divider given by the UI. */ protected int lastDividerLocation; /** The orientation of the JSplitPane. */ protected int orientation; /** The component on the top or left. */ protected Component leftComponent; /** The component on the right or bottom. */ protected Component rightComponent; /** Determines how extra space should be allocated. */ private transient double resizeWeight; /** * Creates a new JSplitPane object with the given orientation, layout mode, * and left and right components. * * @param newOrientation The orientation to use. * @param newContinuousLayout The layout mode to use. * @param newLeftComponent The left component. * @param newRightComponent The right component. * * @throws IllegalArgumentException DOCUMENT ME! */ public JSplitPane(int newOrientation, boolean newContinuousLayout, Component newLeftComponent, Component newRightComponent) { if (newOrientation != HORIZONTAL_SPLIT && newOrientation != VERTICAL_SPLIT) throw new IllegalArgumentException("orientation is invalid."); orientation = newOrientation; continuousLayout = newContinuousLayout; setLeftComponent(newLeftComponent); setRightComponent(newRightComponent); updateUI(); } /** * Creates a new JSplitPane object using nonContinuousLayout mode, the given * orientation and left and right components. * * @param newOrientation The orientation to use. * @param newLeftComponent The left component. * @param newRightComponent The right component. */ public JSplitPane(int newOrientation, Component newLeftComponent, Component newRightComponent) { this(newOrientation, false, newLeftComponent, newRightComponent); } /** * Creates a new JSplitPane object with the given layout mode and * orientation. * * @param newOrientation The orientation to use. * @param newContinuousLayout The layout mode to use. */ public JSplitPane(int newOrientation, boolean newContinuousLayout) { this(newOrientation, newContinuousLayout, null, null); } /** * Creates a new JSplitPane object using a nonContinuousLayout mode and the * given orientation. * * @param newOrientation The orientation to use. */ public JSplitPane(int newOrientation) { this(newOrientation, false, null, null); } /** * Creates a new JSplitPane object using HORIZONTAL_SPLIT and a * nonContinuousLayout mode. */ public JSplitPane() { this(HORIZONTAL_SPLIT, false, new JButton("left button"), new JButton("right button")); } /** * This method adds a component to the JSplitPane. The constraints object is * a string that identifies where this component should go. If the * constraints is not a known one, it will throw an * IllegalArgumentException. The valid constraints are LEFT, TOP, RIGHT, * BOTTOM and DIVIDER. * * @param comp The component to add. * @param constraints The constraints string to use. * @param index Where to place to component in the list of components. * * @throws IllegalArgumentException When the constraints is not a known * identifier. */ protected void addImpl(Component comp, Object constraints, int index) { int left = 0; int right = 1; int div = 2; int place; if (constraints == null) { if (leftComponent == null) constraints = LEFT; else if (rightComponent == null) constraints = RIGHT; } if (constraints instanceof String) { String placement = (String) constraints; if (placement.equals(BOTTOM) || placement.equals(RIGHT)) { if (rightComponent != null) remove(rightComponent); rightComponent = comp; } else if (placement.equals(LEFT) || placement.equals(TOP)) { if (leftComponent != null) remove(leftComponent); leftComponent = comp; } else if (placement.equals(DIVIDER)) constraints = null; else throw new IllegalArgumentException("Constraints is not a known identifier."); super.addImpl(comp, constraints, index); } invalidate(); layout(); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public AccessibleContext getAccessibleContext() { if (accessibleContext == null) accessibleContext = new AccessibleJSplitPane(); return accessibleContext; } /** * This method returns the bottom component. * * @return The bottom component. */ public Component getBottomComponent() { return rightComponent; } /** * This method returns the location of the divider. This method is passed to * the UI. * * @return The location of the divider. */ public int getDividerLocation() { if (ui != null) return ((SplitPaneUI) ui).getDividerLocation(this); else return -1; } /** * This method returns the size of the divider. * * @return The size of the divider. */ public int getDividerSize() { return dividerSize; } /** * This method returns the last divider location. * * @return The last divider location. */ public int getLastDividerLocation() { return lastDividerLocation; } /** * This method returns the left component. * * @return The left component. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -