📄 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 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 + -