|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
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 版本的应用程序之间进行 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.BltBufferStrategy, Component.FlipBufferStrategy |
| 字段摘要 | |
|---|---|
protected AccessibleContext |
accessibleContext
与此 JComponent 关联的 AccessibleContext。 |
protected EventListenerList |
listenerList
此组件的事件侦听器列表。 |
static String |
TOOL_TIP_TEXT_KEY
光标经过组件时所显示的注释,也称为“值提示”、“相交提示”或“相交标签”。 |
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,这样当组件或其任意祖先移动,或者变得可见或不可见时该侦听器可接收 AncestorEvents。 |
|
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)
支持报告 bound 属性的布尔属性的更改。 |
|
void |
firePropertyChange(String propertyName,
char oldValue,
char newValue)
报告 bound 属性的改变。 |
|
void |
firePropertyChange(String propertyName,
int oldValue,
int newValue)
支持报告 bound 属性的整数属性的更改。 |
|
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 属性。 |
|
Border |
getBorder()
返回此组件的边框,如果当前未设置边框,则返回 null。 |
|
Rectangle |
getBounds(Rectangle rv)
将此组件的边界存储到“返回值” rv 中并返回 rv。 |
|
Object |
getClientProperty(Object key)
返回具有指定键的属性值。 |
|
protected Graphics |
getComponentGraphics(Graphics g)
返回用于绘制此组件的 graphics 对象。 |
|
JPopupMenu |
getComponentPopupMenu()
返回为此组件分配的 JPopupMenu。 |
|
int |
getConditionForKeyStroke(KeyStroke aKeyStroke)
返回确定是否执行已注册动作 (action) 的条件,以响应指定的快捷键事件。 |
|
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 |
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)
调用此方法以打印组件。 |
|
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,使其不再接收 AncestorEvents。 |
|
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。
这是一个 bound 属性。
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 子类的 ComponentUI 键。
ComponentUI 子类的 UIDefaults 键UIDefaults.getUI(javax.swing.JComponent)protected Graphics getComponentGraphics(Graphics g)
DebugGraphics,则根据需要创建一个新的 DebugGraphics 对象。否则只是配置指定 graphics 对象的前景和字体。
g - 初始的 Graphics 对象
Graphics 对象protected void paintComponent(Graphics g)
null,则调用该 UI 委托的 paint 方法。向该委托传递 Graphics 对象的副本,以保护其余的 paint 代码免遭不可取消的更改(例如 Graphics.translate)。
如果在子类中重写此方法,则不应该对传入到 Graphics 中的内容进行永久更改。例如,不应更改剪裁矩形 或修改转换。如果需要进行这些操作,您会发现根据传入的 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)
printComponent、printBorder 和 printChildren 的调用。建议不重写此方法,而是重写前面提及的方法之一。此方法设置组件的状态,使得双缓冲区不被使用,例如直接在传入的 Graphics 上完成绘制。
Container 中的 printg - 在其中进行绘制的 Graphics 上下文printComponent(java.awt.Graphics),
printBorder(java.awt.Graphics),
printChildren(java.awt.Graphics)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()
@Deprecated public boolean isManagingFocus()
Component.setFocusTraversalKeys(int, Set) 和 Container.setFocusCycleRoot(boolean) 取代。
将此 JComponent 的焦点遍历键更改为 CTRL+TAB 和 CTRL+SHIFT+TAB。另外在计算焦点遍历循环时,不要让 SortingFocusTraversalPolicy 将此 JComponent 的子组件考虑在内。
Component.setFocusTraversalKeys(int, java.util.Set extends java.awt.AWTKeyStroke>),
SortingFocusTraversalPolicy@Deprecated public void setNextFocusableComponent(Component aComponent)
FocusTraversalPolicy 取代
为此 JComponent 的焦点遍历循环重写默认的 FocusTraversalPolicy,方法是无条件地将指定的 Component 设置为循环中的下一个 Component,并将此 JComponent 设置为循环中指定 Component 的前一个 Component。
aComponent - 焦点遍历循环中应该跟随在此 JComponent 后的 ComponentgetNextFocusableComponent(),
FocusTraversalPolicy@Deprecated public Component getNextFocusableComponent()
FocusTraversalPolicy 取代。
返回由先前对此 JComponent 调用 setNextFocusableComponent(Component) 所设置的 Component。
JComponent 后的 Component,如果尚未显式地指定,则为 nullsetNextFocusableComponent(java.awt.Component)public void setRequestFocusEnabled(boolean requestFocusEnabled)
JComponent 是否应该获得焦点的提示。这只是一个提示,并且由使用者决定请求焦点是否遵守此属性。对于鼠标操作通常是遵守此属性的,但是对于键盘操作则并非如此。例如,在鼠标操作期间,外观可以在请求焦点前验证此属性是否为 true。如果不想在 JComponent 上按下鼠标以获得焦点,而是希望通过键盘遍历