📄 toolkit.java
字号:
/* Toolkit.java -- AWT Toolkit superclass Copyright (C) 1999, 2000, 2001, 2002 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., 59 Temple Place, Suite 330, Boston, MA02111-1307 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 java.awt;import java.awt.event.*;import java.awt.peer.*;import java.awt.image.*;import java.awt.datatransfer.Clipboard;import java.util.Properties;import java.net.URL;import java.beans.*;/** * The AWT system uses a set of native peer objects to implement its * widgets. These peers are provided by a peer toolkit, that is accessed * via a subclass of this superclass. The system toolkit is retrieved * by the static methods <code>getDefaultToolkit</code>. This method * determines the system toolkit by examining the system property * <code>awt.toolkit</code>. That property is set to the name of the * <code>Toolkit</code> subclass for the specified peer set. If the * <code>awt.toolkit</code> property is not set, then the default * toolkit <code>gnu.java.awt.peer.gtk.GtkToolkit</code> is used. This * toolkit creates its peers using the GTK+ toolkit. * * @author Aaron M. Renn (arenn@urbanophile.com) */public abstract class Toolkit{/* * Static Variables */// The default toolkit name.private static String default_toolkit_name = "gnu.java.awt.peer.gtk.GtkToolkit";// The toolkit in use. Once we load it, we don't ever change it// if the awt.toolkit propert is set.private static Toolkit toolkit;// The toolkit propertiesprivate static Properties props = new Properties();private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);private Properties desktopProperties = new Properties();/*************************************************************************//* * Static Methods *//** * Returns an instance of the default toolkit. The default toolkit is * the subclass of <code>Toolkit</code> specified in the system property * <code>awt.toolkit</code>, or <code>gnu.java.awt.peer.gtk.GtkToolkit</code> * if the property is not set. * * @return An instance of the system default toolkit. * * @error AWTError If the toolkit cannot be loaded. */public static ToolkitgetDefaultToolkit(){ if (toolkit != null) return(toolkit); String toolkit_name = System.getProperty("awt.toolkit", default_toolkit_name); try { Class cls = Class.forName(toolkit_name); Object obj = cls.newInstance(); if (!(obj instanceof Toolkit)) throw new AWTError(toolkit_name + " is not a subclass of " + "java.awt.Toolkit"); toolkit = (Toolkit)obj; return(toolkit); } catch(Exception e) { throw new AWTError("Cannot load AWT toolkit: " + e.getMessage()); }}/*************************************************************************//** * Returns the value of the property with the specified name, or the * default value if the property does not exist. * * @param key The name of the property to retrieve. * @param defThe default value of the property. */public static StringgetProperty(String key, String def){ return(props.getProperty(key, def));}/*************************************************************************//** * Returns the native container object of the specified component. This * method is necessary because the parent component might be a lightweight * component. * * @param component The component to fetch the native container for. * * @return The native container object for this component. */protected static ContainergetNativeContainer(Component component){ component = component.getParent(); for(;;) { if (component == null) return(null); if (!(component instanceof Container)) { component = component.getParent(); continue; } if (component.getPeer() instanceof LightweightPeer) { component = component.getParent(); continue; } return((Container)component); }}/*************************************************************************//* * Constructors *//** * Default constructor for subclasses. */publicToolkit(){}/*************************************************************************//* * Instance Methods *//** * Creates a peer object for the specified <code>Button</code>. * * @param target The <code>Button</code> to create the peer for. * * @return The peer for the specified <code>Button</code> object. */protected abstract ButtonPeercreateButton(Button target);/*************************************************************************//** * Creates a peer object for the specified <code>TextField</code>. * * @param target The <code>TextField</code> to create the peer for. * * @return The peer for the specified <code>TextField</code> object. */protected abstract TextFieldPeercreateTextField(TextField target);/*************************************************************************//** * Creates a peer object for the specified <code>Label</code>. * * @param target The <code>Label</code> to create the peer for. * * @return The peer for the specified <code>Label</code> object. */protected abstract LabelPeercreateLabel(Label target);/*************************************************************************//** * Creates a peer object for the specified <code>List</code>. * * @param target The <code>List</code> to create the peer for. * * @return The peer for the specified <code>List</code> object. */protected abstract ListPeercreateList(List target);/*************************************************************************//** * Creates a peer object for the specified <code>Checkbox</code>. * * @param target The <code>Checkbox</code> to create the peer for. * * @return The peer for the specified <code>Checkbox</code> object. */protected abstract CheckboxPeercreateCheckbox(Checkbox target);/*************************************************************************//** * Creates a peer object for the specified <code>Scrollbar</code>. * * @param target The <code>Scrollbar</code> to create the peer for. * * @return The peer for the specified <code>Scrollbar</code> object. */protected abstract ScrollbarPeercreateScrollbar(Scrollbar target);/*************************************************************************//** * Creates a peer object for the specified <code>ScrollPane</code>. * * @param target The <code>ScrollPane</code> to create the peer for. * * @return The peer for the specified <code>ScrollPane</code> object. */protected abstract ScrollPanePeercreateScrollPane(ScrollPane target);/*************************************************************************//** * Creates a peer object for the specified <code>TextArea</code>. * * @param target The <code>TextArea</code> to create the peer for. * * @return The peer for the specified <code>TextArea</code> object. */protected abstract TextAreaPeercreateTextArea(TextArea target);/*************************************************************************//** * Creates a peer object for the specified <code>Choice</code>. * * @param target The <code>Choice</code> to create the peer for. * * @return The peer for the specified <code>Choice</code> object. */protected abstract ChoicePeercreateChoice(Choice target);/*************************************************************************//** * Creates a peer object for the specified <code>Frame</code>. * * @param target The <code>Frame</code> to create the peer for. * * @return The peer for the specified <code>Frame</code> object. */protected abstract FramePeercreateFrame(Frame target);/*************************************************************************//** * Creates a peer object for the specified <code>Canvas</code>. * * @param target The <code>Canvas</code> to create the peer for. * * @return The peer for the specified <code>Canvas</code> object. */protected abstract CanvasPeercreateCanvas(Canvas target);/*************************************************************************//** * Creates a peer object for the specified <code>Panel</code>. * * @param target The <code>Panel</code> to create the peer for. * * @return The peer for the specified <code>Panel</code> object. */protected abstract PanelPeercreatePanel(Panel target);/*************************************************************************//** * Creates a peer object for the specified <code>Window</code>. * * @param target The <code>Window</code> to create the peer for. * * @return The peer for the specified <code>Window</code> object. */protected abstract WindowPeercreateWindow(Window target);/*************************************************************************//** * Creates a peer object for the specified <code>Dialog</code>. * * @param target The dialog to create the peer for * * @return The peer for the specified font name. */protected abstract DialogPeercreateDialog(Dialog target);/*************************************************************************//** * Creates a peer object for the specified <code>MenuBar</code>. * * @param target The <code>MenuBar</code> to create the peer for. * * @return The peer for the specified <code>MenuBar</code> object. */protected abstract MenuBarPeercreateMenuBar(MenuBar target);/*************************************************************************//** * Creates a peer object for the specified <code>Menu</code>. * * @param target The <code>Menu</code> to create the peer for. * * @return The peer for the specified <code>Menu</code> object. */protected abstract MenuPeercreateMenu(Menu target);/*************************************************************************//** * Creates a peer object for the specified <code>PopupMenu</code>. * * @param target The <code>PopupMenu</code> to create the peer for. * * @return The peer for the specified <code>PopupMenu</code> object. */protected abstract PopupMenuPeercreatePopupMenu(PopupMenu target);/*************************************************************************//** * Creates a peer object for the specified <code>MenuItem</code>. * * @param target The <code>MenuItem</code> to create the peer for. * * @return The peer for the specified <code>MenuItem</code> object. */protected abstract MenuItemPeercreateMenuItem(MenuItem target);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -