⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toolkit.java

📁 纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * 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 modify it under the terms of the GNU General Public License as published by the 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, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307 USA.
 * 
 * Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole
 * combination.
 * 
 * As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these
 * independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of
 * the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the
 * library, but you are not obligated to do so. If you do not wish to do so, delete this
 */

package java.awt;

import java.awt.datatransfer.Clipboard;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragGestureRecognizer;
import java.awt.dnd.DragSource;
import java.awt.dnd.peer.DragSourceContextPeer;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
import java.awt.im.InputMethodHighlight;
import java.awt.image.ColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.awt.peer.ButtonPeer;
import java.awt.peer.CanvasPeer;
import java.awt.peer.CheckboxPeer;
import java.awt.peer.CheckboxMenuItemPeer;
import java.awt.peer.ChoicePeer;
import java.awt.peer.DialogPeer;
import java.awt.peer.FileDialogPeer;
import java.awt.peer.FontPeer;
import java.awt.peer.FramePeer;
import java.awt.peer.LabelPeer;
import java.awt.peer.LightweightPeer;
import java.awt.peer.ListPeer;
import java.awt.peer.MenuPeer;
import java.awt.peer.MenuBarPeer;
import java.awt.peer.MenuItemPeer;
import java.awt.peer.PanelPeer;
import java.awt.peer.PopupMenuPeer;
import java.awt.peer.ScrollbarPeer;
import java.awt.peer.ScrollPanePeer;
import java.awt.peer.TextAreaPeer;
import java.awt.peer.TextFieldPeer;
import java.awt.peer.WindowPeer;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.net.URL;
import java.util.Map;
import java.util.Properties;

/**
 * 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 {
	/** 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 property is set.
	 */
	private static Toolkit toolkit;

	/** The toolkit properties. */
	private static Properties props = new Properties();

	protected final Map desktopProperties = new Properties();

	protected final PropertyChangeSupport desktopPropsSupport = new PropertyChangeSupport(this);

	/**
	 * Default constructor for subclasses.
	 */
	public Toolkit() {
	}

	/**
	 * 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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract ButtonPeer createButton(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract TextFieldPeer createTextField(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract LabelPeer createLabel(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract ListPeer createList(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract CheckboxPeer createCheckbox(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract ScrollbarPeer createScrollbar(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract ScrollPanePeer createScrollPane(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract TextAreaPeer createTextArea(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract ChoicePeer createChoice(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract FramePeer createFrame(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 CanvasPeer createCanvas(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 PanelPeer createPanel(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract WindowPeer createWindow(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract DialogPeer createDialog(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract MenuBarPeer createMenuBar(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract MenuPeer createMenu(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract PopupMenuPeer createPopupMenu(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.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract MenuItemPeer createMenuItem(MenuItem target);

	/**
	 * Creates a peer object for the specified <code>FileDialog</code>.
	 * 
	 * @param target
	 *            The <code>FileDialog</code> to create the peer for.
	 * @return The peer for the specified <code>FileDialog</code> object.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract FileDialogPeer createFileDialog(FileDialog target);

	/**
	 * Creates a peer object for the specified <code>CheckboxMenuItem</code>.
	 * 
	 * @param target
	 *            The <code>CheckboxMenuItem</code> to create the peer for.
	 * @return The peer for the specified <code>CheckboxMenuItem</code> object.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected abstract CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target);

	/**
	 * Creates a peer object for the specified <code>Component</code>. The peer returned by this method is not a native windowing system peer with its own native window. Instead, this method
	 * allows the component to draw on its parent window as a "lightweight" widget.
	 * 
	 * XXX: FIXME
	 * 
	 * @param target
	 *            The <code>Component</code> to create the peer for.
	 * @return The peer for the specified <code>Component</code> object.
	 */
	protected LightweightPeer createComponent(Component target) {
		return null;
	}

	/**
	 * Creates a peer object for the specified font name.
	 * 
	 * @param name
	 *            The font to create the peer for.
	 * @param style
	 *            The font style to create the peer for.
	 * @return The peer for the specified font name.
	 */
	protected abstract FontPeer getFontPeer(String name, int style);

	/**
	 * Copies the current system colors into the specified array. This is the interface used by the <code>SystemColors</code> class.
	 * 
	 * @param systemColors
	 *            The array to copy the system colors into.
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected void loadSystemColors(int systemColors[]) {
		// XXX Implement.
	}

	/**
	 * @since 1.4
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	public void setDynamicLayout(boolean dynamic) {
	}

	/**
	 * @since 1.4
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	protected boolean isDynamicLayoutSet() {
		return false;
	}

	/**
	 * @since 1.4
	 * 
	 * @exception HeadlessException
	 *                If GraphicsEnvironment.isHeadless() is true.
	 */
	public boolean isDynamicLayoutActive() {
		return false;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -