component.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 2,221 行 · 第 1/5 页
JAVA
2,221 行
}
/**
* Returns the location of this component. This allows reuse of an existing
* point, if p is non-null.
*
* @param p the point to use, or null
* @return the location
*/
public Point getLocation(Point p) {
if (p == null)
p = new Point();
p.x = x;
p.y = y;
return p;
}
/**
* Tests if this component is opaque. All "heavyweight" (natively-drawn)
* components are opaque. A component is opaque if it draws all pixels in
* the bounds; a lightweight component is partially transparent if it lets
* pixels underneath show through. Subclasses that guarantee that all pixels
* will be drawn should override this.
*
* @return true if this is opaque
* @see #isLightweight()
* @since 1.2
*/
public boolean isOpaque() {
return !isLightweight();
}
/**
* Return whether the component is lightweight. That means the component has
* no native peer, but is displayable. This applies to subclasses of
* Component not in this package, such as javax.swing.
*
* @return true if the component has a lightweight peer
* @see #isDisplayable()
* @since 1.2
*/
public boolean isLightweight() {
return peer instanceof LightweightPeer;
}
/**
* Returns the component's preferred size.
*
* @return the component's preferred size
* @see #getMinimumSize()
* @see LayoutManager
*/
public Dimension getPreferredSize() {
if (prefSize == null)
prefSize = (peer != null ? peer.getPreferredSize() : new Dimension(width, height));
return prefSize;
}
/**
* Returns the component's preferred size.
*
* @return the component's preferred size
* @deprecated use {@link #getPreferredSize()} instead
*/
public Dimension preferredSize() {
return getPreferredSize();
}
/**
* Returns the component's minimum size.
*
* @return the component's minimum size
* @see #getPreferredSize()
* @see LayoutManager
*/
public Dimension getMinimumSize() {
if (minSize == null)
minSize = (peer != null ? peer.getMinimumSize() : new Dimension(width, height));
return minSize;
}
/**
* Returns the component's minimum size.
*
* @return the component's minimum size
* @deprecated use {@link #getMinimumSize()} instead
*/
public Dimension minimumSize() {
return getMinimumSize();
}
/**
* Returns the component's maximum size.
*
* @return the component's maximum size
* @see #getMinimumSize()
* @see #getPreferredSize()
* @see LayoutManager
*/
public Dimension getMaximumSize() {
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
/**
* Returns the preferred horizontal alignment of this component. The value
* returned will be between {@link #LEFT_ALIGNMENT} and
* {@link #RIGHT_ALIGNMENT}, inclusive.
*
* @return the preferred horizontal alignment of this component
*/
public float getAlignmentX() {
return CENTER_ALIGNMENT;
}
/**
* Returns the preferred vertical alignment of this component. The value
* returned will be between {@link #TOP_ALIGNMENT} and
* {@link #BOTTOM_ALIGNMENT}, inclusive.
*
* @return the preferred vertical alignment of this component
*/
public float getAlignmentY() {
return CENTER_ALIGNMENT;
}
/**
* Calls the layout manager to re-layout the component. This is called
* during validation of a container in most cases.
*
* @see #validate()
* @see LayoutManager
*/
public void doLayout() {
// nothing to do unless we're a container
}
/**
* Calls the layout manager to re-layout the component. This is called
* during validation of a container in most cases.
*
* @deprecated use {@link #doLayout()} instead
*/
public void layout() {
doLayout();
}
/**
* Called to ensure that the layout for this component is valid. This is
* usually called on containers.
*
* @see #invalidate()
* @see #doLayout()
* @see LayoutManager
* @see Container#validate()
*/
public void validate() {
valid = true;
}
/**
* Invalidates this component and all of its parent components. This will
* cause them to have their layout redone. This is called frequently, so
* make it fast.
*/
public void invalidate() {
valid = false;
prefSize = null;
minSize = null;
if (parent != null && parent.valid)
parent.invalidate();
}
/**
* Returns a graphics object for this component. Returns <code>null</code>
* if this component is not currently displayed on the screen.
*
* @return a graphics object for this component
* @see #paint(Graphics)
*/
public Graphics getGraphics() {
if (peer != null) {
Graphics gfx = peer.getGraphics();
if (gfx != null)
return gfx;
// create graphics for lightweight:
Container parent = getParent();
if (parent != null) {
gfx = parent.getGraphics();
Rectangle bounds = getBounds();
gfx.setClip(bounds);
gfx.translate(bounds.x, bounds.y);
return gfx;
}
}
return null;
}
/**
* Returns the font metrics for the specified font in this component.
*
* @param font the font to retrieve metrics for
* @return the font metrics for the specified font
* @throws NullPointerException if font is null
* @see #getFont()
* @see Toolkit#getFontMetrics(Font)
*/
public FontMetrics getFontMetrics(Font font) {
return peer == null ? getToolkit().getFontMetrics(font) : peer.getFontMetrics(font);
}
/**
* Sets the cursor for this component to the specified cursor. The cursor
* is displayed when the point is contained by the component, and the
* component is visible, displayable, and enabled. This is inherited by
* subcomponents unless they set their own cursor.
*
* @param cursor the new cursor for this component
* @see #isEnabled()
* @see #isShowing()
* @see #getCursor()
* @see #contains(int, int)
* @see Toolkit#createCustomCursor(Image, Point, String)
*/
public void setCursor(Cursor cursor) {
this.cursor = cursor;
if (peer != null)
peer.setCursor(cursor);
}
/**
* Returns the cursor for this component. If not set, this is inherited
* from the parent, or from Cursor.getDefaultCursor().
*
* @return the cursor for this component
*/
public Cursor getCursor() {
if (cursor != null)
return cursor;
return parent != null ? parent.getCursor() : Cursor.getDefaultCursor();
}
/**
* Tests if the cursor was explicitly set, or just inherited from the parent.
*
* @return true if the cursor has been set
* @since 1.4
*/
public boolean isCursorSet() {
return cursor != null;
}
/**
* Paints this component on the screen. The clipping region in the graphics
* context will indicate the region that requires painting. This is called
* whenever the component first shows, or needs to be repaired because
* something was temporarily drawn on top. It is not necessary for
* subclasses to call <code>super.paint(g)</code>. Components with no area
* are not painted.
*
* @param g the graphics context for this paint job
* @see #update(Graphics)
*/
public void paint(Graphics g) {
}
/**
* Updates this component. This is called in response to
* <code>repaint</code>. This method fills the component with the
* background color, then sets the foreground color of the specified
* graphics context to the foreground color of this component and calls
* the <code>paint()</code> method. The coordinates of the graphics are
* relative to this component. Subclasses should call either
* <code>super.update(g)</code> or <code>paint(g)</code>.
*
* @param graphics the graphics context for this update
* @see #paint(Graphics)
* @see #repaint()
*/
public void update(Graphics g) {
paint(g);
}
/**
* Paints this entire component, including any sub-components.
*
* @param graphics the graphics context for this paint job
* @see #paint(Graphics)
*/
public void paintAll(Graphics g) {
if (!visible)
return;
if (peer != null)
peer.paint(g);
paint(g);
}
/**
* Repaint this entire component. The <code>update()</code> method
* on this component will be called as soon as possible.
*
* @see #update(Graphics)
* @see #repaint(long, int, int, int, int)
*/
public void repaint() {
repaint(0, 0, 0, width, height);
}
/**
* Repaint this entire component. The <code>update()</code> method on this
* component will be called in approximate the specified number of
* milliseconds.
*
* @param tm milliseconds before this component should be repainted
* @see #paint(Graphics)
* @see #repaint(long, int, int, int, int)
*/
public void repaint(long tm) {
repaint(tm, 0, 0, width, height);
}
/**
* Repaints the specified rectangular region within this component. The
* <code>update</code> method on this component will be called as soon as
* possible. The coordinates are relative to this component.
*
* @param x the X coordinate of the upper left of the region to repaint
* @param y the Y coordinate of the upper left of the region to repaint
* @param w the width of the region to repaint
* @param h the height of the region to repaint
* @see #update(Graphics)
* @see #repaint(long, int, int, int, int)
*/
public void repaint(int x, int y, int w, int h) {
repaint(0, x, y, w, h);
}
/**
* Repaints the specified rectangular region within this component. The
* <code>update</code> method on this component will be called in
* approximately the specified number of milliseconds. The coordinates
* are relative to this component.
*
* @param tm milliseconds before this component should be repainted
* @param x the X coordinate of the upper left of the region to repaint
* @param y the Y coordinate of the upper left of the region to repaint
* @param w the width of the region to repaint
* @param h the height of the region to repaint
* @see #update(Graphics)
*/
public void repaint(long tm, int x, int y, int width, int height) {
// Handle lightweight repainting by forwarding to native parent
if (isLightweight() && parent != null) {
if (parent != null)
parent.repaint(tm, x + getX(), y + getY(), width, height);
} else if (peer != null)
peer.repaint(tm, x, y, width, height);
}
/**
* Prints this component. This method is provided so that printing can be
* done in a different manner from painting. However, the implementation
* in this class simply calls the <code>paint()</code> method.
*
* @param graphics the graphics context of the print device
* @see #paint(Graphics)
*/
public void print(Graphics g) {
paint(g);
}
/**
* Prints this component, including all sub-components. This method is
* provided so that printing can be done in a different manner from
* painting. However, the implementation in this class simply calls the
* <code>paintAll()</code> method.
*
* @param graphics the graphics context of the print device
* @see #paintAll(Graphics)
*/
public void printAll(Graphics g) {
paintAll(g);
}
/**
* Called when an image has changed so that this component is repainted.
* This incrementally draws an image as more bits are available, when
* possible. Incremental drawing is enabled if the system property
* <code>awt.image.incrementalDraw</code> is not present or is true, in which
* case the redraw rate is set to 100ms or the value of the system property
* <code>awt.image.redrawrate</code>.
*
* <p>The coordinate system used depends on the particular flags.
*
* @param image the image that has been updated
* @param flags tlags as specified in <code>ImageObserver</code>
* @param x the X coordinate
* @param y the Y coordinate
* @param w the width
* @param h the height
* @return true if the image has been fully loaded
* @see ImageObserver
* @see Graphics#drawImage(Image, int, int, Color, ImageObserver)
* @see Graphics#drawImage(Image, int, int, ImageObserver)
* @see Graphics#drawImage(Image, int, int, int, int, Color, ImageObserver)
* @see Graphics#drawImage(Image, int, int, int, int, ImageObserver)
* @see ImageObserver#update(Image, int, int, int, int, int)
*/
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) {
rate = 10;
}
if (rate > 0) {
repaint(10, x, y, w, h);
}
return ((flags & (ABORT | ALLBITS)) == 0);
}
/**
* Creates an image from the specified producer.
*
* @param producer the image procedure to create the image from
* @return the resulting image
*/
public Image createImage(ImageProducer producer) {
// XXX What if peer or producer is null?
return peer.createImage(producer);
}
/**
* Creates an image with the specified width and height for use in
* double buffering. Headless environments do not support images.
*
* @param width the width of the image
* @param height the height of the image
* @return the requested image, or null if it is not supported
*/
public Image createImage(int width, int height) {
if (GraphicsEnvironment.isHeadless()) {
return null;
}
final GraphicsConfiguration config = getGraphicsConfiguration();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?