📄 component.java
字号:
/**
* Gets the font metrics for the specified font.
* @param <code>font</code> The font for which font metrics is to be
* obtained.
* @return The font metrics for <code>font</code>.
* @param font the font.
* @return the font metrics for the specified font.
* @see java.awt.Component#getFont
* @see java.awt.Component#getPeer()
* @see java.awt.peer.ComponentPeer#getFontMetrics(java.awt.Font)
* @see java.awt.Toolkit#getFontMetrics(java.awt.Font)
* @since JDK1.0
*/
public FontMetrics getFontMetrics(Font font) {
ComponentPeer peer = this.peer;
if ((peer != null) && ! (peer instanceof java.awt.peer.LightweightPeer)) {
return peer.getFontMetrics(font);
}
return getToolkit().getFontMetrics(font);
}
/**
* Set the cursor image to a predefined cursor.
* @param <code>cursor</code> One of the constants defined
* by the <code>Cursor</code> class.
* @see java.awt.Component#getCursor
* @see java.awt.Cursor
* @since JDK1.1
*/
public synchronized void setCursor(Cursor cursor) {
this.cursor = cursor;
ComponentPeer peer = this.peer;
if (peer != null) {
peer.setCursor(cursor);
}
}
/**
* Gets the cursor set on this component.
* @return The cursor for this component.
* @see java.awt.Component#setCursor
* @see java.awt.Cursor
* @since JDK1.1
*/
public Cursor getCursor() {
return cursor;
}
/**
* Paints this component. This method is called when the contents
* of the component should be painted in response to the component
* first being shown or damage needing repair. The clip rectangle
* in the Graphics parameter will be set to the area which needs
* to be painted.
* @param <code>g</code> The graphics context to use for painting.
* @see java.awt.Component#update
* @since JDK1.0
*/
public void paint(Graphics g) {
}
/**
* Updates this component.
* <p>
* The AWT calls the <code>update</code> method in response to a
* call to <code>repaint</code. The appearance of the
* component on the screen has not changed since the last call to
* <code>update</code> or <code>paint</code>. You can assume that
* the background is not cleared.
* <p>
* The <code>update</code>method of <code>Component</code>
* does the following:
* <p>
* <blockquote><ul>
* <li>Clears this component by filling it
* with the background color.
* <li>Sets the color of the graphics context to be
* the foreground color of this component.
* <li>Calls this component's <code>paint</code>
* method to completely redraw this component.
* </ul></blockquote>
* <p>
* The origin of the graphics context, its
* (<code>0</code>, <code>0</code>) coordinate point, is the
* top-left corner of this component. The clipping region of the
* graphics context is the bounding rectangle of this component.
* @param g the specified context to use for updating.
* @see java.awt.Component#paint
* @see java.awt.Component#repaint()
* @since JDK1.0
*/
public void update(Graphics g) {
if ((! (peer instanceof java.awt.peer.LightweightPeer)) &&
(! (this instanceof Label)) && (! (this instanceof TextField))) {
g.setColor(getBackground());
g.fillRect(0, 0, width, height);
g.setColor(getForeground());
}
paint(g);
}
/**
* Paints this component and all of its subcomponents.
* <p>
* The origin of the graphics context, its
* (<code>0</code>, <code>0</code>) coordinate point, is the
* top-left corner of this component. The clipping region of the
* graphics context is the bounding rectangle of this component.
* @param g the graphics context to use for painting.
* @see java.awt.Component#paint
* @since JDK1.0
*/
public void paintAll(Graphics g) {
ComponentPeer peer = this.peer;
if (visible && (peer != null)) {
validate();
if (peer instanceof java.awt.peer.LightweightPeer) {
paint(g);
} else {
peer.paint(g);
}
}
}
/**
* Repaints this component.
* <p>
* This method causes a call to this component's <code>update</code>
* method as soon as possible.
* @see java.awt.Component#update(java.awt.Graphics)
* @since JDK1.0
*/
public void repaint() {
repaint(0, 0, 0, width, height);
}
/**
* Repaints the component. This will result in a
* call to <code>update</code> within <em>tm</em> milliseconds.
* @param tm maximum time in milliseconds before update
* @see #paint
* @see java.awt.Component#update(java.awt.Graphics)
* @since JDK1.0
*/
public void repaint(long tm) {
repaint(tm, 0, 0, width, height);
}
/**
* Repaints the specified rectangle of this component.
* <p>
* This method causes a call to this component's <code>update</code>
* method as soon as possible.
* @param x the <i>x</i> coordinate.
* @param y the <i>y</i> coordinate.
* @param width the width.
* @param height the height.
* @see java.awt.Component#update(java.awt.Graphics)
* @since JDK1.0
*/
public void repaint(int x, int y, int width, int height) {
repaint(0, x, y, width, height);
}
/**
* Repaints the specified rectangle of this component within
* <code>tm</code> milliseconds.
* <p>
* This method causes a call to this component's
* <code>update</code> method.
* @param tm maximum time in milliseconds before update.
* @param x the <i>x</i> coordinate.
* @param y the <i>y</i> coordinate.
* @param width the width.
* @param height the height.
* @see java.awt.Component#update(java.awt.Graphics)
* @since JDK1.0
*/
public void repaint(long tm, int x, int y, int width, int height) {
if (this.peer instanceof java.awt.peer.LightweightPeer) {
// Needs to be translated to parent coordinates since
// a parent native container provides the actual repaint
// services. Additionally, the request is restricted to
// the bounds of the component.
int px = this.x + ((x < 0) ? 0 : x);
int py = this.y + ((y < 0) ? 0 : y);
int pwidth = (width > this.width) ? this.width : width;
int pheight = (height > this.height) ? this.height : height;
parent.repaint(tm, px, py, pwidth, pheight);
} else {
ComponentPeer peer = this.peer;
if ((peer != null) && (width > 0) && (height > 0)) {
peer.repaint(tm, x, y, width, height);
}
}
}
/**
* Prints this component. Applications should override this method
* for components that must do special processing before being
* printed or should be printed differently than they are painted.
* <p>
* The default implementation of this method calls the
* <code>paint</code> method.
* <p>
* The origin of the graphics context, its
* (<code>0</code>, <code>0</code>) coordinate point, is the
* top-left corner of this component. The clipping region of the
* graphics context is the bounding rectangle of this component.
* @param g the graphics context to use for printing.
* @see java.awt.Component#paint(java.awt.Graphics)
* @since JDK1.0
*/
public void print(Graphics g) {
paint(g);
}
/**
* Prints this component and all of its subcomponents.
* <p>
* The origin of the graphics context, its
* (<code>0</code>, <code>0</code>) coordinate point, is the
* top-left corner of this component. The clipping region of the
* graphics context is the bounding rectangle of this component.
* @param g the graphics context to use for printing.
* @see java.awt.Component#print(java.awt.Graphics)
* @since JDK1.0
*/
public void printAll(Graphics g) {
ComponentPeer peer = this.peer;
if (visible && (peer != null)) {
validate();
Graphics cg = g.create(0, 0, width, height);
cg.setFont(getFont());
try {
if (peer instanceof java.awt.peer.LightweightPeer) {
lightweightPrint(g);
}
else {
peer.print(g);
}
} finally {
cg.dispose();
}
}
}
/**
* Simulates the peer callbacks into java.awt for printing of
* lightweight Components.
* @param g the graphics context to use for printing.
* @see #printAll
*/
void lightweightPrint(Graphics g) {
print(g);
}
/**
* Repaints the component when the image has changed.
* This <code>imageUpdate</code> method of an <code>ImageObserver</code>
* is called when more information about an
* image which had been previously requested using an asynchronous
* routine such as the <code>drawImage</code> method of
* <code>Graphics</code> becomes available.
* See the definition of <code>imageUpdate</code> for
* more information on this method and its arguments.
* <p>
* The <code>imageUpdate</code> method of <code>Component</code>
* incrementally draws an image on the component as more of the bits
* of the image are available.
* <p>
* If the system property <code>awt.image.incrementalDraw</code>
* is missing or has the value <code>true</code>, the image is
* incrementally drawn, If the system property has any other value,
* then the image is not drawn until it has been completely loaded.
* <p>
* Also, if incremental drawing is in effect, the value of the
* system property <code>awt.image.redrawrate</code> is interpreted
* as an integer to give the maximum redraw rate, in milliseconds. If
* the system property is missing or cannot be interpreted as an
* integer, the redraw rate is once every 100ms.
* <p>
* The interpretation of the <code>x</code>, <code>y</code>,
* <code>width</code>, and <code>height</code> arguments depends on
* the value of the <code>infoflags</code> argument.
* @param img the image being observed.
* @param infoflags see <code>imageUpdate</code> for more information.
* @param x the <i>x</i> coordinate.
* @param y the <i>y</i> coordinate.
* @param width the width.
* @param height the height.
* @return <code>true</code> if the flags indicate that the
* image is completely loaded;
* <code>false</code> otherwise.
* @see java.awt.image.ImageObserver
* @see java.awt.Graphics#drawImage(java.awt.Image, int, int, java.awt.Color, java.awt.image.ImageObserver)
* @see java.awt.Graphics#drawImage(java.awt.Image, int, int, java.awt.image.ImageObserver)
* @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int, java.awt.Color, java.awt.image.ImageObserver)
* @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int, java.awt.image.ImageObserver)
* @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int)
* @since JDK1.0
*/
public boolean imageUpdate(Image img, int flags,
int x, int y, int w, int h) {
int rate = -1;
if ((flags & (FRAMEBITS|ALLBITS)) != 0) {
rate = 0;
} else if ((flags & SOMEBITS) != 0) {
if (isInc) {
try {
rate = incRate;
if (rate < 0)
rate = 0;
} catch (Exception e) {
rate = 100;
}
}
}
if (rate >= 0) {
repaint(rate, 0, 0, width, height);
}
return (flags & (ALLBITS|ABORT)) == 0;
}
/**
* Creates an image from the specified image producer.
* @param producer the image producer
* @return the image produced.
* @since JDK1.0
*/
public Image createImage(ImageProducer producer) {
ComponentPeer peer = this.peer;
if ((peer != null) && ! (peer instanceof java.awt.peer.LightweightPeer)) {
return peer.createImage(producer);
}
return getToolkit().createImage(producer);
}
/**
* Creates an off-screen drawable image
* to be used for double buffering.
* @param width the specified width.
* @param height the specified height.
* @return an off-screen drawable image,
* which can be used for double buffering.
* @since JDK1.0
*/
public Image createImage(int width, int height) {
ComponentPeer peer = this.peer;
if (peer instanceof java.awt.peer.LightweightPeer) {
return parent.createImage(width, height);
} else {
return (peer != null) ? peer.createImage(width, height) : null;
}
}
/**
* Prepares an image for rendering on this component. The image
* data is downloaded asynchronously in another thread and the
* appropriate screen representation of the image is generated.
* @param image the <code>Image</code> for which to
* prepare a screen representation.
* @param observer the <code>ImageObserver</code> object
* to be notified as the image is being prepared.
* @return <code>true</code> if the image has already been fully prepared;
<code>false</code> otherwise.
* @since JDK1.0
*/
public boolean prepareImage(Image image, ImageObserver observer) {
return prepareImage(image, -1, -1, observer);
}
/**
* Prepares an image for rendering on this component at the
* specified width and height.
* <p>
* The image data is downloaded asynchronously in another thread,
* and an appropriately scaled screen representation of the image is
* generated.
* @param image the instance of <code>Image</code>
* for which to prepare a screen representation.
* @param width the width of the desired screen representation.
* @param height the height of the desired screen representation.
* @param observer the <code>ImageObserver</code> object
* to be notified as the image is being prepared.
* @return <code>true</code> if the image has already been fully prepared;
<code>false</code> otherwise.
* @see java.awt.image.ImageObserver
* @since JDK1.0
*/
public boolean prepareImage(Image image, int width, int height,
ImageObserver observer) {
ComponentPeer peer = this.peer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -