|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
public abstract class JComponent
该类是除顶层容器外所有 Swing 组件的基类。要使用继承自 JComponent 的组件,必须将该组件置于一个根为顶层 Swing 容器的包含层次结构(containment hierarchy)中。顶层 Swing 容器(如 JFrame、JDialog 和 JApplet)是专门为其他 Swing 组件提供绘制自身场所的组件。有关包含层次结构的解释,请参阅 The Java Tutorial 中的 Swing Components and the Containment Hierarchy 一节。
JComponent 类提供:
ComponentUI 的对象。有关更多信息,请参阅 The Java Tutorial 中的 How to Set the Look and Feel。
JComponent 包含 Accessible 接口中的所有方法,但是它实际上不实现该接口。由扩展 JComponent 的每个类负责实现该接口。
putClientProperty(java.lang.Object, java.lang.Object) 和 getClientProperty(java.lang.Object) 方法,可以将“名称-对象”对与继承自 JComponent 的任意对象进行关联。
JComponent 及其子类记录了某些属性的默认值。例如,JTable 记录的默认行高为 16。每个具有 ComponentUI 的 JComponent 子类都将创建该 ComponentUI 作为其构造方法的一部分。为了提供特定的外观,每个 ComponentUI 都可以在创建它的 JComponent 上设置各种属性。例如,自定义的外观可能要求 JTable 的行高为 24。而所记录的默认值是安装 ComponentUI 前的属性值。如果需要为特定的属性使用具体值,则应该显式地设置它。
在版本 1.4 中,重新设计了焦点子系统。有关更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节。
警告:Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder。
KeyStroke,
Action,
setBorder(javax.swing.border.Border),
registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int),
JOptionPane,
setDebugGraphicsOptions(int),
setToolTipText(java.lang.String),
setAutoscrolls(boolean)| 嵌套类摘要 | |
|---|---|
class |
JComponent.AccessibleJComponent
用于为可访问性提供默认支持的 JComponent 内部类。 |
| 从类 java.awt.Container 继承的嵌套类/接口 |
|---|
Container.AccessibleAWTContainer |
| 从类 java.awt.Component 继承的嵌套类/接口 |
|---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
| 字段摘要 | |
|---|---|
protected AccessibleContext |
accessibleContext
与此 JComponent 关联的 AccessibleContext。 |
protected EventListenerList |
listenerList
此组件的事件侦听器列表。 |
static String |
TOOL_TIP_TEXT_KEY
光标位于组件上方时显示的注释,也称为“值提示”、“相交提示 (flyover help)”或“相交标签 (flyover label)”。 |
protected ComponentUI |
ui
此组件的外观委托。 |
static int |
UNDEFINED_CONDITION
某些 API 使用的常量,意味着没有定义任何条件。 |
static int |
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
用于 registerKeyboardAction 的常量,意味着当接收组件是获得焦点的组件的祖先或者其本身就是获得焦点的组件时,应该调用命令。 |
static int |
WHEN_FOCUSED
用于 registerKeyboardAction 的常量,意味着在组件获得焦点时应该调用命令。 |
static int |
WHEN_IN_FOCUSED_WINDOW
用于 registerKeyboardAction 的常量,意味着当接收组件处于获得焦点的窗口内或者其本身就是获得焦点的组件时,应该调用命令。 |
| 从类 java.awt.Component 继承的字段 |
|---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
| 从接口 java.awt.image.ImageObserver 继承的字段 |
|---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
| 构造方法摘要 | |
|---|---|
JComponent()
默认的 JComponent 构造方法。 |
|
| 方法摘要 | ||
|---|---|---|
void |
addAncestorListener(AncestorListener listener)
注册 listener,从而当组件或其任意祖先移动,或者变得可见或不可见时该侦听器将收到 AncestorEvent。 |
|
void |
addNotify()
通知此组件它现在已有了一个父组件。 |
|
void |
addVetoableChangeListener(VetoableChangeListener listener)
向侦听器列表添加一个 VetoableChangeListener。 |
|
void |
computeVisibleRect(Rectangle visibleRect)
返回该 Component 的“可见 rect 矩形”,即此组件及其所有祖先的可见矩形的交集。 |
|
boolean |
contains(int x,
int y)
为了进行鼠标处理,让 UI 委托来定义此组件的精确形状。 |
|
JToolTip |
createToolTip()
返回用于显示工具提示的 JToolTip 实例。 |
|
void |
disable()
已过时。 从 JDK version 1.1 开始,由 java.awt.Component.setEnabled(boolean) 取代。 |
|
void |
enable()
已过时。 从 JDK version 1.1 开始,由 java.awt.Component.setEnabled(boolean) 取代。 |
|
void |
firePropertyChange(String propertyName,
boolean oldValue,
boolean newValue)
支持报告 boolean 属性的绑定属性更改。 |
|
void |
firePropertyChange(String propertyName,
char oldValue,
char newValue)
报告绑定属性的改变。 |
|
void |
firePropertyChange(String propertyName,
int oldValue,
int newValue)
支持报告整数属性的绑定属性更改。 |
|
protected void |
fireVetoableChange(String propertyName,
Object oldValue,
Object newValue)
支持报告约束 (constrained) 属性的更改。 |
|
AccessibleContext |
getAccessibleContext()
返回与此 JComponent 关联的 AccessibleContext。 |
|
ActionListener |
getActionForKeyStroke(KeyStroke aKeyStroke)
返回执行针对给定键击而注册的操作的对象。 |
|
ActionMap |
getActionMap()
返回用于确定为特定 KeyStroke 绑定触发何种 Action 的 ActionMap。 |
|
float |
getAlignmentX()
重写 Container.getAlignmentX 以返回垂直对齐方式。 |
|
float |
getAlignmentY()
重写 Container.getAlignmentY 以返回水平对齐方式。 |
|
AncestorListener[] |
getAncestorListeners()
返回在此组件上注册的所有祖先侦听器所组成的数组。 |
|
boolean |
getAutoscrolls()
获取 autoscrolls 属性。 |
|
int |
getBaseline(int width,
int height)
返回基线。 |
|
Component.BaselineResizeBehavior |
getBaselineResizeBehavior()
返回一个枚举,指示组件的基线如何随大小更改而发生更改。 |
|
Border |
getBorder()
返回此组件的边框;如果当前未设置边框,则返回 null。 |
|
Rectangle |
getBounds(Rectangle rv)
将此组件的边界存储到“返回值” rv 中并返回 rv。 |
|
Object |
getClientProperty(Object key)
返回具有指定键的属性的值。 |
|
protected Graphics |
getComponentGraphics(Graphics g)
返回用于绘制此组件的图形对象。 |
|
JPopupMenu |
getComponentPopupMenu()
返回为此组件分配的 JPopupMenu。 |
|
int |
getConditionForKeyStroke(KeyStroke aKeyStroke)
返回确定是否发生已注册动作以响应指定键击事件的条件。 |
|
int |
getDebugGraphicsOptions()
返回图形调试的状态。 |
|
static Locale |
getDefaultLocale()
返回在创建时,用于初始化每个 JComponent 的语言环境属性的默认语言环境。 |
|
FontMetrics |
getFontMetrics(Font font)
获取指定 Font 的 FontMetrics。 |
|
Graphics |
getGraphics()
返回此组件的图形上下文,该上下文允许您绘制组件。 |
|
int |
getHeight()
返回此组件的当前高度。 |
|
boolean |
getInheritsPopupMenu()
如果应该从父组件继承 JPopupMenu,则返回 true。 |
|
InputMap |
getInputMap()
返回组件具有焦点时所使用的 InputMap。 |
|
InputMap |
getInputMap(int condition)
返回 condition 中所使用的 InputMap。 |
|
InputVerifier |
getInputVerifier()
返回此组件的输入校验器。 |
|
Insets |
getInsets()
如果已在此组件上设置了边框,则返回该边框的 insets;否则调用 super.getInsets。 |
|
Insets |
getInsets(Insets insets)
返回包含此组件 inset 值的 Insets 对象。 |
|
|
getListeners(Class<T> listenerType)
返回当前在此 JComponent 上注册为 FooListener 的所有对象所组成的数组。 |
|
Point |
getLocation(Point rv)
将此组件的 x,y 原点存储到“返回值” rv 中并返回 rv。 |
|
Dimension |
getMaximumSize()
如果已将最大大小设置为一个非 null 值,则返回该值。 |
|
Dimension |
getMinimumSize()
如果已将最小大小设置为一个非 null 值,则返回该值。 |
|
Component |
getNextFocusableComponent()
已过时。 从 1.4 版本开始,由 FocusTraversalPolicy 取代。 |
|
Point |
getPopupLocation(MouseEvent event)
返回在此组件坐标系统中显示弹出式菜单的首选位置。 |
|
Dimension |
getPreferredSize()
如果 preferredSize 已设置为一个非 null 值,则返回该值。 |
|
KeyStroke[] |
getRegisteredKeyStrokes()
返回启动已注册动作的 KeyStrokes。 |
|
JRootPane |
getRootPane()
返回此组件的 JRootPane 祖先。 |
|
Dimension |
getSize(Dimension rv)
将此组件的宽度/高度存储到“返回值” rv 中并返回 rv。 |
|
Point |
getToolTipLocation(MouseEvent event)
返回工具提示在此组件坐标系统中的位置。 |
|
String |
getToolTipText()
返回通过 setToolTipText 所设置的工具提示字符串。 |
|
String |
getToolTipText(MouseEvent event)
返回用作 event 工具提示的字符串。 |
|
Container |
getTopLevelAncestor()
返回此组件的顶层祖先(包含的 Window 或 Applet);如果尚未将此组件添加到任意容器中,则返回 null。 |
|
TransferHandler |
getTransferHandler()
获取 transferHandler 属性。 |
|
String |
getUIClassID()
返回用于查找 wing.plaf.ComponentUI 类(定义了此组件的外观)名的 UIDefaults 键。 |
|
boolean |
getVerifyInputWhenFocusTarget()
返回值指示是否在此组件请求焦点前,为当前的焦点所有者调用输入校验器。 |
|
VetoableChangeListener[] |
getVetoableChangeListeners()
返回在此组件上注册的所有可否决更改侦听器所组成的数组。 |
|
Rectangle |
getVisibleRect()
返回该 Component 的“可见矩形”,即此组件的可见矩形 new Rectangle(0, 0, getWidth(), getHeight()) 及其所有祖先的可见矩形的交集。 |
|
int |
getWidth()
返回此组件的当前宽度。 |
|
int |
getX()
返回组件原点的当前 x 坐标。 |
|
int |
getY()
返回组件原点的当前 y 坐标。 |
|
void |
grabFocus()
请求此 Component 获取输入焦点,并请求此 Component 的顶层祖先成为获得焦点的 Window。 |
|
boolean |
isDoubleBuffered()
返回此组件是否应该使用缓冲区进行绘制。 |
|
static boolean |
isLightweightComponent(Component c)
如果此组件是轻量的,也就是说,如果它没有本机窗口系统同位体,则返回 true。 |
|
boolean |
isManagingFocus()
已过时。 从 1.4 版本开始,由 Component.setFocusTraversalKeys(int, Set) 和 Container.setFocusCycleRoot(boolean) 取代。 |
|
boolean |
isOpaque()
如果此组件是完全不透明的,则返回 true。 |
|
boolean |
isOptimizedDrawingEnabled()
如果此组件平铺显示其子组件(也就是说,它可以保证子组件不重叠),则返回 true。 |
|
boolean |
isPaintingForPrint()
如果此组件上的当前绘制操作是 print 操作的一部分,则返回 true。 |
|
boolean |
isPaintingTile()
如果组件当前正在绘制 tile,则返回 true。 |
|
boolean |
isRequestFocusEnabled()
如果此 JComponent 应该获得焦点,则返回 true;否则返回 false。 |
|
boolean |
isValidateRoot()
如果此方法返回 true,则此组件的子代调用 revalidate 将导致从此根开始对整棵树进行验证。 |
|
void |
paint(Graphics g)
由 Swing 调用,以绘制组件。 |
|
protected void |
paintBorder(Graphics g)
绘制组件的边框。 |
|
protected void |
paintChildren(Graphics g)
绘制此组件的子组件。 |
|
protected void |
paintComponent(Graphics g)
如果 UI 委托为非 null,则调用该 UI 委托的 paint 方法。 |
|
void |
paintImmediately(int x,
int y,
int w,
int h)
立即绘制此组件及其与该区域重叠的子代中的指定区域。 |
|
void |
paintImmediately(Rectangle r)
立即绘制指定的区域。 |
|
protected String |
paramString()
返回此 JComponent 的字符串表示形式。 |
|
void |
print(Graphics g)
调用此方法打印指定 Graphics 的组件。 |
|
void |
printAll(Graphics g)
调用此方法打印组件。 |
|
protected void |
printBorder(Graphics g)
打印组件的边框。 |
|
protected void |
printChildren(Graphics g)
打印此组件的子组件。 |
|
protected void |
printComponent(Graphics g)
在打印操作期间调用此方法。 |
|
protected void |
processComponentKeyEvent(KeyEvent e)
处理该组件本身可识别的所有键事件。 |
|
protected boolean |
processKeyBinding(KeyStroke ks,
KeyEvent e,
int condition,
boolean pressed)
由于发生 KeyEvent e 而调用此方法处理 ks 的键绑定。 |
|
protected void |
processKeyEvent(KeyEvent e)
重写 processKeyEvent 以处理事件。 |
|
protected void |
processMouseEvent(MouseEvent e)
处理此组件上发生的鼠标事件,通过将其指派到任意已注册的 MouseListener 对象来完成,有关此方法的完整描述,请参阅 Component.processMouseEvent(MouseEvent)。 |
|
protected void |
processMouseMotionEvent(MouseEvent e)
处理鼠标移动事件,如 MouseEvent.MOUSE_DRAGGED。 |
|
void |
putClientProperty(Object key,
Object value)
向此组件添加任意的键/值“客户端属性”。 |
|
void |
registerKeyboardAction(ActionListener anAction,
KeyStroke aKeyStroke,
int aCondition)
此方法现在已过时,对于类似的操作,请结合使用 getActionMap() 和 getInputMap()。 |
|
void |
registerKeyboardAction(ActionListener anAction,
String aCommand,
KeyStroke aKeyStroke,
int aCondition)
此方法现在已过时,对于类似的操作,请结合使用 getActionMap() 和 getInputMap()。 |
|
void |
removeAncestorListener(AncestorListener listener)
注销 listener,使其不再接收 AncestorEvent。 |
|
void |
removeNotify()
通知此组件它不再有父组件。 |
|
void |
removeVetoableChangeListener(VetoableChangeListener listener)
从侦听器列表移除一个 VetoableChangeListener。 |
|
void |
repaint(long tm,
int x,
int y,
int width,
int height)
如果要显示组件,则将指定的区域添加到脏区 (dirty region) 列表。 |
|
void |
repaint(Rectangle r)
如果要显示该组件,则将指定的区域添加到脏区列表。 |
|
boolean |
requestDefaultFocus()
已过时。 从 1.4 版本开始,由 FocusTraversalPolicy.getDefaultComponent(Container).requestFocus() 取代 |
|
void |
requestFocus()
请求此 Component 获取输入焦点。 |
|
boolean |
requestFocus(boolean temporary)
请求此 Component 获取输入焦点。 |
|
boolean |
requestFocusInWindow()
请求此 Component 获取输入焦点。 |
|
protected boolean |
requestFocusInWindow(boolean temporary)
请求此 Component 获取输入焦点。 |
|
void |
resetKeyboardActions()
注销首层 InputMaps 和 ActionMap 中的所有绑定。 |
|
void |
reshape(int x,
int y,
int w,
int h)
已过时。 从 JDK 5 开始,由 Component.setBounds(int, int, int, int) 取代。
移动此组件并调整其大小。 |
|
void |
revalidate()
支持推迟的自动布局。 |
|
void |
scrollRectToVisible(Rectangle aRect)
将 scrollRectToVisible() 消息转发到 JComponent 的父组件。 |
|
void |
setActionMap(ActionMap am)
将 ActionMap 设置为 am。 |
|
void |
setAlignmentX(float alignmentX)
设置垂直对齐方式。 |
|
void |
setAlignmentY(float alignmentY)
设置水平对齐方式。 |
|
void |
setAutoscrolls(boolean autoscrolls)
设置 autoscrolls 属性。 |
|
void |
setBackground(Color bg)
设置此组件的背景色。 |
|
void |
setBorder(Border border)
设置此组件的边框。 |
|
void |
setComponentPopupMenu(JPopupMenu popup)
设置此 JComponent 的 JPopupMenu。 |
|
void |
setDebugGraphicsOptions(int debugOptions)
启用或禁用与组件或其某个子组件内执行的每个图形操作有关的诊断信息。 |
|
static void |
setDefaultLocale(Locale l)
设置在创建时,用于初始化每个 JComponent 的语言环境属性的默认语言环境。 |
|
void |
setDoubleBuffered(boolean aFlag)
设置此组件是否应该使用缓冲区进行绘制。 |
|
void |
setEnabled(boolean enabled)
设置是否启用此组件。 |
|
void |
setFocusTraversalKeys(int id,
Set<? extends AWTKeyStroke> keystrokes)
设置针对此 Component 的给定遍历操作的焦点遍历键。 |
|
void |
setFont(Font font)
设置此组件的字体。 |
|
void |
setForeground(Color fg)
设置此组件的前景色。 |
|
void |
setInheritsPopupMenu(boolean value)
设置如果此组件没有分配给它的 JPopupMenu,那么 getComponentPopupMenu 是否应该委托给其父组件。 |
|
void |
setInputMap(int condition,
InputMap map)
设置在 map 的 condition 条件下要使用的 InputMap。 |
|
void |
setInputVerifier(InputVerifier inputVerifier)
设置此组件的输入校验器。 |
|
void |
setMaximumSize(Dimension maximumSize)
将此组件的最大大小设置为一个常量值。 |
|
void |
setMinimumSize(Dimension minimumSize)
将此组件的最小大小设置为一个常量值。 |
|
void |
setNextFocusableComponent(Component aComponent)
已过时。 从 1.4 版本开始,由 FocusTraversalPolicy 取代 |
|
void |
setOpaque(boolean isOpaque)
如果为 true,则该组件绘制其边界内的所有像素。 |
|
void |
setPreferredSize(Dimension preferredSize)
设置此组件的首选大小。 |
|
void |
setRequestFocusEnabled(boolean requestFocusEnabled)
提供一个关于此 JComponent 是否应该获得焦点的提示。 |
|
void |
setToolTipText(String text)
注册要在工具提示中显示的文本。 |
|
void |
setTransferHandler(TransferHandler newHandler)
设置 transferHandler 属性;如果该组件不支持数据传输操作,则为 null。 |
|
protected void |
setUI(ComponentUI newUI)
设置此组件的外观委托。 |
|
void |
setVerifyInputWhenFocusTarget(boolean verifyInputWhenFocusTarget)
设置该值指示是否在此组件请求焦点前,为当前的焦点所有者调用输入校验器。 |
|
void |
setVisible(boolean aFlag)
使该组件可见或不可见。 |
|
void |
unregisterKeyboardAction(KeyStroke aKeyStroke)
此方法现在已过时。 |
|
void |
update(Graphics g)
调用 paint。 |
|
void |
updateUI()
将 UI 属性重置为当前外观的值。 |
|
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 字段详细信息 |
|---|
protected transient ComponentUI ui
protected EventListenerList listenerList
public static final int WHEN_FOCUSED
registerKeyboardAction 的常量,意味着在组件获得焦点时应该调用命令。
public static final int WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
registerKeyboardAction 的常量,意味着当接收组件是获得焦点的组件的祖先或者其本身就是获得焦点的组件时,应该调用命令。
public static final int WHEN_IN_FOCUSED_WINDOW
registerKeyboardAction 的常量,意味着当接收组件处于获得焦点的窗口内或者其本身就是获得焦点的组件时,应该调用命令。
public static final int UNDEFINED_CONDITION
public static final String TOOL_TIP_TEXT_KEY
protected AccessibleContext accessibleContext
JComponent 关联的 AccessibleContext。
| 构造方法详细信息 |
|---|
public JComponent()
JComponent 构造方法。除调用 Container 构造方法外,此构造方法几乎不进行初始化工作。例如,初始布局管理器为 null。但是,它将组件的语言环境属性设置为 JComponent.getDefaultLocale 所返回的值。
getDefaultLocale()| 方法详细信息 |
|---|
public void setInheritsPopupMenu(boolean value)
JPopupMenu,那么 getComponentPopupMenu 是否应该委托给其父组件。
此方法的默认值是 false,但是某些作为多个 JComponent 实现的 JComponent 子类可能将其设置为 true。
这是一个绑定 (bound) 属性。
value - JPopupMenu 是否是继承的setComponentPopupMenu(javax.swing.JPopupMenu)public boolean getInheritsPopupMenu()
setComponentPopupMenu(javax.swing.JPopupMenu)public void setComponentPopupMenu(JPopupMenu popup)
JComponent 的 JPopupMenu。UI 负责注册绑定并添加必要的侦听器,这样可在恰当的时间显示 JPopupMenu。何时显示 JPopupMenu 取决于外观:有些在鼠标事件中显示它,另一些则启用键绑定。
如果 popup 为 null,并且 getInheritsPopupMenu 返回 true,则将 getComponentPopupMenu 委托给父级。这将允许所有子组件继承父组件的 popupmenu。
这是一个绑定属性。
popup - - 分配给此组件的弹出菜单,可以为 nullgetComponentPopupMenu()public JPopupMenu getComponentPopupMenu()
JPopupMenu。如果尚未给此组件分配 JPopupMenu 并且 getInheritsPopupMenu 为 true,则此方法返回 getParent().getComponentPopupMenu()(假定父组件是有效的)。
JPopupMenu;如果未分配弹出菜单,则为 nullsetComponentPopupMenu(javax.swing.JPopupMenu)public void updateUI()
JComponent 子类必须用以下方式重写此方法:
public void updateUI() {
setUI((SliderUI)UIManager.getUI(this);
}
setUI(javax.swing.plaf.ComponentUI),
UIManager.getLookAndFeel(),
UIManager.getUI(javax.swing.JComponent)protected void setUI(ComponentUI newUI)
JComponent 子类通常重写此方法,以缩小参数类型。例如,在 JSlider 中:
public void setUI(SliderUI newUI) {
super.setUI(newUI);
}
此外,JComponent 子类必须提供一个返回正确类型的 getUI 方法。例如:
public SliderUI getUI() {
return (SliderUI)ui;
}
newUI - 新的 UI 委托updateUI(),
UIManager.getLookAndFeel(),
UIManager.getUI(javax.swing.JComponent)public String getUIClassID()
wing.plaf.ComponentUI 类(定义了此组件的外观)名的 UIDefaults 键。大多数应用程序无需调用此方法。支持可插入外观的 JComponent 子类应该重写此方法,以返回映射到定义其外观的 ComponentUI 子类的 UIDefaults 键。
ComponentUI 子类的 UIDefaults 键UIDefaults.getUI(javax.swing.JComponent)protected Graphics getComponentGraphics(Graphics g)
DebugGraphics,则根据需要创建一个新的 DebugGraphics 对象。否则只是配置指定图形对象的前景和字体。
g - 原 Graphics 对象
Graphics 对象protected void paintComponent(Graphics g)
null,则调用该 UI 委托的 paint 方法。向该委托传递 Graphics 对象的副本,以保护其余的 paint 代码免遭不可取消的更改(例如 Graphics.translate)。
如果在子类中重写此方法,则不应该对传入的 Graphics 进行永久更改。例如,不应更改剪贴区的 Rectangle 或修改转换。如果需要进行这些操作,您会发现根据传入的 Graphics 创建一个新 Graphics 并进行操作更加方便。另外,如果不调用超类的实现,则必须遵守不透明属性,也就是说,如果此组件是不透明的,则必须以透明的颜色完全填充背景。如果不遵守不透明属性,则很可能看到可视的人为内容。
传入的 Graphics 对象可能安装了恒等转换以外的转换。在这种情况下,如果多次应用其他转换,则可能得到不可预料的结果。
g - 要保护的 Graphics 对象paint(java.awt.Graphics),
ComponentUIprotected void paintChildren(Graphics g)
shouldUseBuffer 为 true,那么所有的组件祖先都没有缓冲区,且组件的子组件可以使用缓冲区(如果有)。否则,有一个祖先具有当前正在使用的缓冲区,且子组件不应该使用缓冲区进行绘制。
g - 在其中进行绘制的 Graphics 上下文paint(java.awt.Graphics),
Container.paint(java.awt.Graphics)protected void paintBorder(Graphics g)
如果在子类中重写此方法,则不应该对传入的 Graphics 进行永久更改。例如,不应更改剪贴区的 Rectangle 或修改转换。如果需要进行这些操作,您会发现根据传入的 Graphics 创建一个新 Graphics 并进行操作更加方便。
g - 在其中进行绘制的 Graphics 上下文paint(java.awt.Graphics),
setBorder(javax.swing.border.Border)public void update(Graphics g)
paint。不清除背景,而是查看 ComponentUI.update,它由 paintComponent 调用。
Container 中的 updateg - 在其中进行绘制的 Graphics 上下文paint(java.awt.Graphics),
paintComponent(java.awt.Graphics),
ComponentUIpublic void paint(Graphics g)
paint,而是应该使用 repaint 方法来安排重绘组件。
此方法实际上将绘制工作委托给三个受保护的方法:paintComponent、paintBorder 和 paintChildren。按列出的顺序调用这些方法,以确保子组件出现在组件本身的顶部。一般来说,不应在分配给边框的 insets 区域绘制组件及其子组件。子类可以始终重写此方法。只想特殊化 UI(外观)委托的 paint 方法的子类只需重写 paintComponent。
Container 中的 paintg - 在其中进行绘制的 Graphics 上下文paintComponent(java.awt.Graphics),
paintBorder(java.awt.Graphics),
paintChildren(java.awt.Graphics),
getComponentGraphics(java.awt.Graphics),
repaint(long, int, int, int, int)public void printAll(Graphics g)
print。
Component 中的 printAllg - 在其中进行绘制的 Graphics 上下文print(java.awt.Graphics),
printComponent(java.awt.Graphics),
printBorder(java.awt.Graphics),
printChildren(java.awt.Graphics)public void print(Graphics g)
Graphics 的组件。此方法将导致对 printComponent、printBorder 和 printChildren 的调用。如果目的是定制打印外观的方式,建议重写前面提及的方法之一,而不是此方法。但是,如果想在调用超类行为之前准备好状态,则重写此方法很有用。例如,如果想在打印前更改组件的背景颜色,则可以执行以下操作:
public void print(Graphics g) {
Color orig = getBackground();
setBackground(Color.WHITE);
// wrap in try/finally so that we always restore the state
try {
super.print(g);
} finally {
setBackground(orig);
}
}
另外,对于将打印委托给其他对象的组件,在绘制期间就可以查询组件是否在打印操作的中间。isPaintingForPrint 方法提供了这种功能并且此方法将改变其返回值:在即将呈现前改为 true,在呈现后立即改为 false。随着每一次更改,在此组件上都会触发一个名为 "paintingForPrint" 的属性更改事件。
此方法设置组件的状态,使得双缓冲无法使用:绘制将直接在传入的 Graphics 上完成。
Container 中的 printg - 在其中进行绘制的 Graphics 上下文printComponent(java.awt.Graphics),
printBorder(java.awt.Graphics),
printChildren(java.awt.Graphics),
isPaintingForPrint()protected void printComponent(Graphics g)
paintComponent。如果要在打印时添加特殊的绘制行为,可重写此方法。
g - 在其中进行绘制的 Graphics 上下文print(java.awt.Graphics)protected void printChildren(Graphics g)
paintChildren。如果希望以不同于绘制的方式打印子组件,则重写此方法。
g - 在其中进行绘制的 Graphics 上下文print(java.awt.Graphics)protected void printBorder(Graphics g)
paintBorder。如果要以和绘制该边框所不同的方式来打印边框,则重写此方法。
g - 在其中进行绘制的 Graphics 上下文print(java.awt.Graphics)public boolean isPaintingTile()
public final boolean isPaintingForPrint()
print 操作的一部分,则返回 true。当想要定制所打印的内容以及在屏幕上显示的内容时,此方法很有用。
通过侦听此组件上名为 "paintingForPrint" 的属性更改事件,可以检测此属性值中的更改。
注:此方法也提供其他高级别 Swing 打印 API 所提供的功能。但是,它严格处理绘制操作,不要因为高级别打印进程上提供的信息相混淆。例如,JTable.print() 操作不一定会连续呈现完整的组件,此方法的返回值在该操作中可多次更改。组件甚至有可能在打印进程正在进行时便绘制到屏幕。在这种情况下,当且仅当该表作为打印进程的一部分进行绘制时,此方法的返回值为 true。
print(java.awt.Graphics)@Deprecated public boolean isManagingFocus()
Component.setFocusTraversalKeys(int, Set) 和 Container.setFocusCycleRoot(boolean) 取代。