|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.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
,如果未分配弹出式内容,则为 null
setComponentPopupMenu(javax.swing.JPopupMenu)
public void updateUI()
JComponent
的子类必须以如下方式重写此方法:
public void updateUI() { setUI((SliderUI)UIManager.getUI(this); }
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)
,
ComponentUI
protected 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
调用。
g
- 在其中进行绘制的 Graphics
上下文paint(java.awt.Graphics)
,
paintComponent(java.awt.Graphics)
,
ComponentUI
public void paint(Graphics g)
paint
,而是应该使用 repaint
方法来安排重绘组件。
此方法实际上将绘制工作委托给三个受保护的方法:paintComponent
、paintBorder
和 paintChildren
。按列出的顺序调用这些方法,以确保子组件出现在组件本身的顶部。一般而言,不应在分配给边框的 insets 区域绘制组件及其子组件。子类可以始终只重写此方法。只想特殊化 UI(外观)委托的 paint
方法的子类应该只重写 paintComponent
。
public void printAll(Graphics g)
print
。
g
- 在其中进行绘制的 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
上完成绘制。
g
- 在其中进行绘制的 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 的子组件考虑在内。
@Deprecated public void setNextFocusableComponent(Component aComponent)
FocusTraversalPolicy
取代
为此 JComponent
的焦点遍历循环重写默认的 FocusTraversalPolicy
,方法是无条件地将指定的 Component
设置为循环中的下一个 Component
,并将此 JComponent
设置为循环中指定 Component
的前一个 Component
。
aComponent
- 焦点遍历循环中应该跟随在此 JComponent
后的 Component
getNextFocusableComponent()
,
FocusTraversalPolicy
@Deprecated public Component getNextFocusableComponent()
FocusTraversalPolicy
取代。
返回由先前对此 JComponent
调用 setNextFocusableComponent(Component)
所设置的 Component
。
JComponent
后的 Component
,如果尚未显式地指定,则为 null
setNextFocusableComponent(java.awt.Component)
public void setRequestFocusEnabled(boolean requestFocusEnabled)
JComponent
是否应该获得焦点的提示。这只是一个提示,并且由使用者决定请求焦点是否遵守此属性。对于鼠标操作通常是遵守此属性的,但是对于键盘操作则并非如此。例如,在鼠标操作期间,外观可以在请求焦点前验证此属性是否为 true。如果不想在 JComponent
上按下鼠标以获得焦点,而是希望通过键盘遍历 JComponent
,则要多次使用此方法。如果根本不想让此 JComponent
成为可聚焦的,则使用 setFocusable
方法。
有关更多信息,请参阅《The Java Tutorial》中的 How to Use the Focus Subsystem 一节。
requestFocusEnabled
- 指示是否让此 JComponent
成为可聚焦的Component.setFocusable(boolean)
public boolean isRequestFocusEnabled()
JComponent
应该获得焦点,则返回 true
;否则返回 false
。
有关更多信息,请参阅《The Java Tutorial》中的 How to Use the Focus Subsystem 一节。
true
;否则返回 false
setRequestFocusEnabled(boolean)
,
Focus Specification,
Component.isFocusable()
public void requestFocus()
Component
获得输入焦点。有关此方法的完整描述,请参阅 Component.requestFocus()
。
注意,推荐不使用此方法,因为其行为是与平台相关的。我们建议使用
requestFocusInWindow()
。若要了解有关焦点的更多信息,请参阅
Component
中的 requestFocus
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
public boolean requestFocus(boolean temporary)
Component
获得输入焦点。有关此方法的完整描述,请参阅 Component.requestFocus(boolean)
。
注意,不推荐使用此方法,因为其行为是与平台相关的。我们建议使用 requestFocusInWindow(boolean)
。如果需要了解有关焦点的更多信息,请参阅《The Java Tutorial》中的 How to Use the Focus Subsystem 一节。
Component
中的 requestFocus
temporary
- boolean 值,指示焦点更改是否为临时的
false
;如果很可能成功,则返回 true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
public boolean requestFocusInWindow()
Component
获得输入焦点。有关此方法的完整描述,请参阅 Component.requestFocusInWindow()
。
如果需要了解有关焦点的更多信息,请参阅《The Java Tutorial》中的 How to Use the Focus Subsystem 一节。
Component
中的 requestFocusInWindow
false
;如果可能成功,则返回 true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
protected boolean requestFocusInWindow(boolean temporary)
Component
获得输入焦点。有关此方法的完整描述,请参阅 Component.requestFocusInWindow(boolean)
。
如果需要了解有关焦点的更多信息,请参阅
Component
中的 requestFocusInWindow
temporary
- boolean 值,指示焦点更改是否为临时的
false
;如果可能成功,则返回 true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
public void grabFocus()
此方法由焦点实现所使用。客户端代码不应使用此方法;相反,它应该使用 requestFocusInWindow()
。
public void setVerifyInputWhenFocusTarget(boolean verifyInputWhenFocusTarget)
verifyInputWhenFocusTarget
- verifyInputWhenFocusTarget
属性的值InputVerifier
,
setInputVerifier(javax.swing.InputVerifier)
,
getInputVerifier()
,
getVerifyInputWhenFocusTarget()
public boolean getVerifyInputWhenFocusTarget()
verifyInputWhenFocusTarget
属性的值InputVerifier
,
setInputVerifier(javax.swing.InputVerifier)
,
getInputVerifier()
,
setVerifyInputWhenFocusTarget(boolean)
public FontMetrics getFontMetrics(Font font)
Font
的 FontMetrics
。
Component
中的 getFontMetrics
font
- 要获取其字体规格的字体
font
的字体规格
NullPointerException
- 如果 font
为 nullComponent.getFont()
,
Component.getPeer()
,
ComponentPeer.getFontMetrics(Font)
,
Toolkit.getFontMetrics(Font)
public void setPreferredSize(Dimension preferredSize)
preferredSize
为 null
,则要求 UI 提供首选大小。
Component
中的 setPreferredSize
preferredSize
- 新的首选大小,或者为 nullComponent.getPreferredSize()
,
Component.isPreferredSizeSet()
public Dimension getPreferredSize()
preferredSize
已设置为非 null
值,则返回该值。如果 UI 委托的 getPreferredSize
方法返回非 null
值,则返回该值;否则服从该组件的布局管理器。
Container
中的 getPreferredSize
preferredSize
属性的值setPreferredSize(java.awt.Dimension)
,
ComponentUI
public void setMaximumSize(Dimension maximumSize)
getMaximumSize
的后续调用将始终返回此值;而不要求组件的 UI 计算它。将最大大小设置为 null
可还原默认的行为。
Component
中的 setMaximumSize
maximumSize
- 一个包含所需最大允许大小的 Dimension
getMaximumSize()
public Dimension getMaximumSize()
null
值,则返回该值。如果 UI 委托的 getMaximumSize
方法返回非 null
值,则返回该值;否则服从该组件的布局管理器。
Container
中的 getMaximumSize
maximumSize
属性的值setMaximumSize(java.awt.Dimension)
,
ComponentUI
public void setMinimumSize(Dimension minimumSize)
getMinimumSize
的后续调用将始终返回此值;不会要求组件的 UI 计算它。将最低大小设置为 null
可还原默认的行为。
Component
中的 setMinimumSize
minimumSize
- 此组件新的最低大小getMinimumSize()
public Dimension getMinimumSize()
null
值,则返回该值。如果 UI 委托的 getMinimumSize
方法返回非 null
值,则返回该值;否则服从该组件的布局管理器。
Container
中的 getMinimumSize
minimumSize
属性的值setMinimumSize(java.awt.Dimension)
,
ComponentUI
public boolean contains(int x, int y)
x
- 该点的 x 坐标y
- 该点的 y 坐标
Component.contains(int, int)
,
ComponentUI
public void setBorder(Border border)
Border
对象负责定义组件的 insets(直接对该组件重写所有 insets 设置),并且可选地呈现这些 insets 范围内的边框装饰。要为 swing 组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是 insets)。在单个组件中可使用复合边框来嵌套多个边框。
虽然从技术上讲可以在继承自 JComponent
的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法很好地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel
或 JLabel
上设置边框时,我们建议将该组件放入 JPanel
中,并在 JPanel
上设置边框。
这是一个 bound 属性。
border
- 要为此组件呈现的边框Border
,
CompoundBorder
public Border getBorder()
null
。
setBorder(javax.swing.border.Border)
public Insets getInsets()
super.getInsets
。
setBorder(javax.swing.border.Border)
public Insets getInsets(Insets insets)
Insets
对象。如有可能,将重用传入的 Insets
对象。但是调用这些方法不能假定将返回相同的对象。重写此对象内所有现有值。如果 insets
为 null,则此方法将分配一个新的 insets。
insets
- Insets
对象,它可以被重用
Insets
对象getInsets()
public float getAlignmentY()
Container.getAlignmentY
以返回水平对齐方式。
Container
中的 getAlignmentY
alignmentY
属性的值setAlignmentY(float)
,
Component.getAlignmentY()
public void setAlignmentY(float alignmentY)
alignmentY
- 新的水平对齐方式getAlignmentY()
public float getAlignmentX()
Container.getAlignmentX
以返回垂直对齐方式。
Container
中的 getAlignmentX
alignmentX
属性的值setAlignmentX(float)
,
Component.getAlignmentX()
public void setAlignmentX(float alignmentX)
alignmentX
- 新的垂直对齐方式getAlignmentX()
public void setInputVerifier(InputVerifier inputVerifier)
inputVerifier
- 新的输入校验器InputVerifier
public InputVerifier getInputVerifier()
inputVerifier
属性InputVerifier
public Graphics getGraphics()
Graphics
对象,然后在该对象上调用操作,以便绘制组件。
Component
中的 getGraphics
Component.paint(java.awt.Graphics)
public void setDebugGraphicsOptions(int debugOptions)
debugOptions
- 确定组件应该如何显示信息;为下列选项之一:
ExternalWindow
,显示在 View 的脱屏缓冲区上执行的操作。
debugOptions
按位或运算的结果public int getDebugGraphicsOptions()
ExternalWindow
,显示在 View 的脱屏缓冲区上执行的操作。
setDebugGraphicsOptions(int)
public void registerKeyboardAction(ActionListener anAction, String aCommand, KeyStroke aKeyStroke, int aCondition)
getActionMap()
和 getInputMap()
。例如,要将 KeyStroke
aKeyStroke
绑定到 Action
anAction
,现在使用:
component.getInputMap().put(aKeyStroke, aCommand); component.getActionMap().put(aCommmand, anAction);以上假定您希望绑定适用于
WHEN_FOCUSED
。要为其他焦点状态注册绑定,可使用将整数作为参数的 getInputMap
方法。
注册一个新的键盘操作。如果出现一个与 aKeyStroke
匹配的键事件并且 aCondition
经过了验证,则调用 anAction
。KeyStroke
对象定义了键盘键和一个或多个组合键(alt、shift、ctrl、meta)的特定组合。
aCommand
将在传递的事件(如果指定了事件)中进行设置。
aCondition
可以为:
- WHEN_FOCUSED
- 仅在击键发生、同时组件具有焦点时才调用该操作。
- WHEN_IN_FOCUSED_WINDOW
- 当击键发生、同时组件具有焦点时,或者组件处于具有焦点的窗口中时调用该操作。注意,该组件无需是该窗口的直接子级,它可以处于窗口包含层次结构中的任意位置。换句话说,只要窗口中的任意 组件具有焦点,就调用向此组件注册的操作。
- WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
- 当击键发生、同时组件具有焦点时,或者该组件是具有焦点的组件的祖先时调用该操作。
这种击键和条件的组合允许您为指定的击键+组合键组合定义高级别(语义)的操作事件(使用 KeyStroke 类),并导向具有焦点的组件的父组件或子组件,或者该组件本身。换句话说,在所有的组件层次结构中,可将任意的键组合导向层次结构中的适当组件,并调用具体的方法(通常通过适配器对象的方式)。
如果已经使用相同的 charCode 和组合键为接收容器注册了某个 action,则 anAction
将取代该 action。
anAction
- 要注册的 Action
aCommand
- 要在传递的事件中设置的命令aKeyStroke
- 与操作绑定的 KeyStroke
aCondition
- 符合的条件,参见上述内容KeyStroke
public void registerKeyboardAction(ActionListener anAction, KeyStroke aKeyStroke, int aCondition)
getActionMap()
和 getInputMap()
。
public void unregisterKeyboardAction(KeyStroke aKeyStroke)
ActionMap/InputMap
中移除该绑定,或者在 InputMap
中放置一个虚拟(dummy)绑定。从 InputMap
中移除绑定允许父 InputMap
中的绑定处于激活状态,而在 InputMap
中放置一个 dummy 绑定则可以有效地禁止发生绑定。
注销一个键盘操作。此操作将从 ActionMap
(如果存在)和 InputMap
中移除绑定。
public KeyStroke[] getRegisteredKeyStrokes()
KeyStrokes
。
public int getConditionForKeyStroke(KeyStroke aKeyStroke)
对于 Java 2 平台 v1.3,一个 KeyStroke
可与多个条件相关联。例如,'a' 可以和两个条件 WHEN_FOCUSED
和 WHEN_IN_FOCUSED_WINDOW
绑定。
public ActionListener getActionForKeyStroke(KeyStroke aKeyStroke)
ActionListener
对象public void resetKeyboardActions()
InputMaps
和 ActionMap
中的所有绑定。此操作可以移除所有的本地绑定,并允许保留父 InputMap/ActionMaps
中所定义的绑定(通常在第二层定义 UI)。
public final void setInputMap(int condition, InputMap map)
map
的 condition
条件下要使用的 InputMap
。null
意味着不想使用任何绑定(包括来自 UI 的绑定)。这不会重新安装 UI InputMap
(如果已经有一个)。condition
具有下列某个值:
WHEN_IN_FOCUSED_WINDOW
WHEN_FOCUSED
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
condition
是 WHEN_IN_FOCUSED_WINDOW
并且 map
不是 ComponentInputMap
,则抛出 IllegalArgumentException
。类似地,如果 condition
不是上面列出的某个值,则抛出 IllegalArgumentException
。
condition
- 上面所列的某个值map
- 为给定条件所使用的 InputMap
IllegalArgumentException
- 如果 condition
是 WHEN_IN_FOCUSED_WINDOW
并且 map
不是 ComponentInputMap
的实例;或者 condition
不是上面指定的某个合法值public final InputMap getInputMap(int condition)
condition
期间使用的 InputMap
。
condition
- WHEN_IN_FOCUSED_WINDOW、WHEN_FOCUSED、WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 之一
condition
的 InputMap
public final InputMap getInputMap()
InputMap
。这是 getInputMap(WHEN_FOCUSED)
的一个便捷方法。
InputMap
public final void setActionMap(ActionMap am)
ActionMap
设置为 am
。这不会根据 UI(如果有)将 am
的父级也设置成 ActionMap
,而是由调用方决定是否这样做。
am
- 新的 ActionMap
public final ActionMap getActionMap()
KeyStroke
绑定激发何种 Action
的 ActionMap
。除非另行设置,否则返回的 ActionMap
根据 UI 设置确定作为其父级的 ActionMap
。
ActionMap
@Deprecated public boolean requestDefaultFocus()
FocusTraversalPolicy.getDefaultComponent(Container).requestFocus()
取代
请求此 JComponent
的 FocusTraversalPolicy
的默认 Component
上的焦点。如果此 JComponent
是焦点循环根,则使用其 FocusTraversalPolicy
。否则,使用此 JComponent
的焦点循环根祖先的 FocusTraversalPolicy
。
public void setVisible(boolean aFlag)
Component.setVisible
。
Component
中的 setVisible
aFlag
- true 使该组件可见;false 使其不可见Component.isVisible()
public void setEnabled(boolean enabled)
注:禁用某个组件并不禁用其子组件。
注:禁用轻量组件不会阻止其接收 MouseEvents。
Component
中的 setEnabled
enabled
- 如果应该启用此组件,则为 true;否则为 falseComponent.isEnabled()
,
Component.isLightweight()
public void setForeground(Color fg)
Component
中的 setForeground
fg
- 所需的前景 Color
Component.getForeground()
public void setBackground(Color bg)
Component
中的 setBackground
bg
- 所需的背景 Color
Component.getBackground()
public void setFont(Font font)
font
- 此组件所需的 Font
Component.getFont()
public static Locale getDefaultLocale()
Locale
。setDefaultLocale(java.util.Locale)
,
Component.getLocale()
,
Component.setLocale(java.util.Locale)
public static void setDefaultLocale(Locale l)
l
- 所需的默认 Locale
,用于新的组件。getDefaultLocale()
,
Component.getLocale()
,
Component.setLocale(java.util.Locale)
protected void processComponentKeyEvent(KeyEvent e)
实现此方法不执行任何操作。如果子类本身处理某些键事件,则这些子类通常重写此方法。应该在处理事件后使用该事件。
protected void processKeyEvent(KeyEvent e)
processKeyEvent
以处理事件。
Component
中的 processKeyEvent
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
KeyEvent
e
而针对 ks
的键绑定。这会获得适当的 InputMap
、获取绑定、从 ActionMap
获取操作,然后(如果找到该操作并且已启用该组件)调用 notifyAction
来通知该操作。
ks
- 被查询的 KeyStroke
e
- KeyEvent
condition
- 为下列值之一:
pressed
- 如果键被按下,则为 true
public void setToolTipText(String text)
有关更多信息,请参阅《The Java Tutorial》中的 How to Use Tool Tips。
text
- 要显示的字符串,如果 text 为 null
,则关闭此组件的工具提示TOOL_TIP_TEXT_KEY
public String getToolTipText()
setToolTipText
所设置的工具提示字符串。
TOOL_TIP_TEXT_KEY
public String getToolTipText(MouseEvent event)
setToolTipText
所设置的任意字符串。如果组件提供了更广泛的 API,以支持不同位置处的不同工具提示,则应重写此方法。
public Point getToolTipLocation(MouseEvent event)
null
,则 Swing 将选择某个位置。默认实现返回 null
。
event
- 导致 ToolTipManager
显示工具提示的 MouseEvent
null
public Point getPopupLocation(MouseEvent event)
null
,则外观将选择一个合适的位置。
event
- 触发显示弹出式菜单的 MouseEvent
,如果不是因鼠标事件而显示弹出式菜单,则为 null
public JToolTip createToolTip()
JToolTip
实例。组件通常不重写此方法,但是可将其用于以不同的方式显示不同的工具提示。
JToolTip
public void scrollRectToVisible(Rectangle aRect)
scrollRectToVisible()
消息转发到 JComponent
的父组件。可执行该请求的组件(如 JViewport
)会重写此方法并执行滚动。
aRect
- 可见的 Rectangle
JViewport
public void setAutoscrolls(boolean autoscrolls)
autoscrolls
属性。如果为 true
,则在将鼠标拖动到组件的边界外并且鼠标移动已暂停(但是继续按下鼠标按键)时,合成地生成鼠标拖动事件。该合成事件使得拖动操作在跨越组件的边界时所建立的方向上恢复。支持自动滚动的组件必须处理 mouseDragged
事件,方法是调用带有一个包含鼠标事件位置的矩形的 scrollRectToVisible
。所有支持项选择以及通常在 JScrollPane
(JTable
、JList
、JTree
、JTextArea
和 JEditorPane
)中显示的 Swing 组件都已经以这种方式处理了鼠标拖动事件。要在任何其他组件中启用自动滚动,可添加一个调用 scrollRectToVisible
的鼠标移动侦听器。例如,给定 JPanel
、myPanel
:
MouseMotionListener doScrollRectToVisible = new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1); ((JPanel)e.getSource()).scrollRectToVisible(r); } }; myPanel.addMouseMotionListener(doScrollRectToVisible);
autoScrolls
属性的默认值是 false
。
autoscrolls
- 如果为 true,则在将鼠标拖动到组件的边界外并且继续按下鼠标按键时,生成合成鼠标拖动事件;否则为 falsegetAutoscrolls()
,
JViewport
,
JScrollPane
public boolean getAutoscrolls()
autoscrolls
属性。
autoscrolls
属性的值JViewport
,
setAutoscrolls(boolean)
public void setTransferHandler(TransferHandler newHandler)
transferHandler
属性,如果该组件不支持数据传输操作,则为 null
。
如果 newHandler
不为 null
并且系统属性 suppressSwingDropSupport
不为 true,则此方法将在 JComponent
上安装一个 DropTarget
。该系统属性的默认值为 false,所以将添加一个 DropTarget
。
有关更多信息,请参阅《The Java Tutorial》中的 How to Use Drag and Drop and Data Transfer 一节。
newHandler
- 在组件之间传输数据的机制TransferHandler
,
getTransferHandler()
public TransferHandler getTransferHandler()
transferHandler
属性。
transferHandler
属性的值TransferHandler
,
setTransferHandler(javax.swing.TransferHandler)
protected void processMouseEvent(MouseEvent e)
MouseListener
对象,有关此方法的完整描述,请参阅 Component.processMouseEvent(MouseEvent)
。
Component
中的 processMouseEvent
e
- 鼠标事件Component.processMouseEvent(java.awt.event.MouseEvent)
protected void processMouseMotionEvent(MouseEvent e)
Component
中的 processMouseMotionEvent
e
- the MouseEvent
MouseEvent
@Deprecated public void enable()
@Deprecated public void disable()
public AccessibleContext getAccessibleContext()
JComponent
关联的 AccessibleContext
。此基类所实现的方法返回 null。扩展 JComponent
的类应该实现此方法,以返回与该子类关联的 AccessibleContext
。
Component
中的 getAccessibleContext
JComponent
的 AccessibleContext
public final Object getClientProperty(Object key)
putClientProperty
添加的属性才返回非 null
值。
key
- 查询的内容
null
putClientProperty(java.lang.Object, java.lang.Object)
public final void putClientProperty(Object key, Object value)
get/putClientProperty
方法提供对每个实例小型哈希表的访问。调用方可以使用 get/putClientProperty 为另一个模块所创建的组件添加注释。例如,布局管理器可能以此方式来存储每个子组件的各种约束。例如:
componentA.putClientProperty("to the left of", componentB);如果值为
null
,则此方法将移除该属性。通过 PropertyChange
事件报告客户端属性的更改。该属性的名称(为了 PropertyChange 事件)是 key.toString()
。
clientProperty
字典不支持对 JComponent 的大范围扩展,并且也不适合在设计新组件时进行其他子类化工作。
key
- 新的客户端属性键value
- 新的客户端属性值,如果为 null
,则此方法将移除该属性getClientProperty(java.lang.Object)
,
Container.addPropertyChangeListener(java.beans.PropertyChangeListener)
public void setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
Component.setFocusTraversalKeys(int, java.util.Set extends java.awt.AWTKeyStroke>)
。
Container
中的 setFocusTraversalKeys
id
- KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS 或 KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 之一keystrokes
- 指定操作的 AWTKeyStroke 的 Set
IllegalArgumentException
- 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS 或 KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 之一、或者 keystrokes 包含 null、或者 keystroke 中的 Object 不是 AWTKeyStroke、或者任意 keystroke 表示一个 KEY_TYPED 事件,或者任意 keystroke 已经映射到此 Component 的另一个焦点遍历操作KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS
,
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS
,
KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
public static boolean isLightweightComponent(Component c)
@Deprecated public void reshape(int x, int y, int w, int h)
Component.setBounds(int, int, int, int)
取代。
移动此组件并调整其大小。
x
- 新的水平位置y
- 新的垂直位置w
- 新的宽度h
- 新的高度Component.setBounds(int, int, int, int)
public Rectangle getBounds(Rectangle rv)
rv
中并返回 rv
。如果 rv
为 null
,则分配一个新的 Rectangle
。如果调用方不希望在堆上分配一个新的 Rectangle
对象,则此版本的 getBounds
是很有用的。
rv
- 返回值,被修改为该组件的边界
rv
;如果 rv
为 null
,则返回新创建的、具有此组件边界的 Rectangle
public Dimension getSize(Dimension rv)
rv
中并返回 rv
。如果 rv
为 null
,则分配一个新的 Dimension
对象。如果调用方不希望在堆上分配一个新的 Dimension
对象时,此版本的 getSize
是很有用的。
rv
- 返回值,被修改为该组件的大小
rv
public Point getLocation(Point rv)
rv
中并返回 rv
。如果 rv
为 null
,则分配一个新的 Point
。如果调用方不希望在堆上分配一个新的 Point
对象,则此版本的 getLocation
是很有用的。
Component
中的 getLocation
rv
- 返回值,被修改为该组件的位置
rv
public int getX()
component.getBounds().x
或 component.getLocation().x
,因为它不会导致任何堆分配。
public int getY()
component.getBounds().y
或 component.getLocation().y
,因为它不会导致任何堆分配。
public int getWidth()
component.getBounds().width
或 component.getSize().width
,因为它不会导致任何堆分配。
public int getHeight()
component.getBounds().height
或 component.getSize().height
,因为它不会导致任何堆分配。
public boolean isOpaque()
不透明组件将每个像素绘制在其矩形边界内。透明的组件则仅绘制其某些像素或根本不绘制任何像素,允许其下面的像素“透视出来”。因此,没有完全绘制其像素的组件则提供了一定程度的透明度。
保证总是完全绘制其内容的子类应该重写此方法并返回 true。
setOpaque(boolean)
public void setOpaque(boolean isOpaque)
对于 JComponent
而言,此属性的默认值是 false。但是对于大多数标准的 JComponent
子类(如 JButton
和 JTree
),此属性的默认值是和外观相关的。
isOpaque
- 如果此组件应该是透明的,则为 trueisOpaque()
public void computeVisibleRect(Rectangle visibleRect)
Component
的“可见 rect 矩形”,即此组件及其所有祖先的可见矩形的交集。返回值存储在 visibleRect
中。
visibleRect
- 根据此组件及其所有祖先的所有可见矩形交集而计算出的 Rectangle
,这是此方法的返回值getVisibleRect()
public Rectangle getVisibleRect()
Component
的“可见矩形”,即此组件的可见矩形 new Rectangle(0, 0, getWidth(), getHeight())
及其所有祖先的可见矩形的交集。
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Component
中的 firePropertyChange
propertyName
- 其值已更改的属性oldValue
- 该属性以前的值newValue
- 该属性的新值public void firePropertyChange(String propertyName, int oldValue, int newValue)
Component
中的 firePropertyChange
propertyName
- 其值已更改的属性oldValue
- 该属性以前的值newValue
- 该属性的新值public void firePropertyChange(String propertyName, char oldValue, char newValue)
Component
复制的描述
Component
中的 firePropertyChange
propertyName
- 已改变的属性的编程名称oldValue
- 该属性的旧值(char 类型)newValue
- 该属性的新值(char 类型)Component.firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
protected void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoException
VetoableChangeListeners
发送相应的 PropertyChangeEvent
时可以调用此方法。
propertyName
- 对其进行侦听的属性名称oldValue
- 该属性的旧值newValue
- 该属性的新值
PropertyVetoException
- 组件禁止设置该属性时public void addVetoableChangeListener(VetoableChangeListener listener)
VetoableChangeListener
。为所有属性注册该侦听器。
listener
- 要添加的 VetoableChangeListener
public void removeVetoableChangeListener(VetoableChangeListener listener)
VetoableChangeListener
。此方法移除了一个为所有属性注册的 VetoableChangeListener
。
listener
- 要移除的 VetoableChangeListener
public VetoableChangeListener[] getVetoableChangeListeners()
VetoableChangeListener
,如果当前没有注册的可否决更改侦听器,则返回一个空数组addVetoableChangeListener(java.beans.VetoableChangeListener)
,
removeVetoableChangeListener(java.beans.VetoableChangeListener)
public Container getTopLevelAncestor()
Window
或 Applet
),如果尚未将此组件添加到任意容器中,则返回 null
。
Container
,如果不在任何容器中,则返回 null
public void addAncestorListener(AncestorListener listener)
listener
,这样当组件或其任意祖先移动,或者变得可见或不可见时该侦听器可接收 AncestorEvents
。从包含层次结构中添加或移除组件或其祖先时,也发送这些事件。
listener
- 要注册的 AncestorListener
AncestorEvent
public void removeAncestorListener(AncestorListener listener)
listener
,使其不再接收 AncestorEvents
。
listener
- 要移除的 AncestorListener
addAncestorListener(javax.swing.event.AncestorListener)
public AncestorListener[] getAncestorListeners()
AncestorListener
,如果当前没有注册的祖先侦听器,则返回一个空数组addAncestorListener(javax.swing.event.AncestorListener)
,
removeAncestorListener(javax.swing.event.AncestorListener)
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
JComponent
上注册为 FooListener
的所有对象组成的数组。FooListener
是使用 addFooListener
方法注册的。
可以使用 class 字面值来指定 listenerType
参数,如 FooListener.class
。例如,可以使用以下代码来查询 JComponent
c
的鼠标侦听器:
MouseListener[] mls = (MouseListener[])(c.getListeners(MouseListener.class));如果不存在这样的侦听器,则此方法将返回一个空数组。
Container
中的 getListeners
listenerType
- 所请求的侦听器类型;此参数应该指定一个从 java.util.EventListener
继承的接口
FooListener
注册的所有对象的数组,如果尚未添加这样的侦听器,则返回一个空数组
ClassCastException
- 如果 listenerType
未指定一个实现 java.util.EventListener
的类或接口getVetoableChangeListeners()
,
getAncestorListeners()
public void addNotify()
KeyboardAction
事件侦听器设置父组件链。
public void removeNotify()
KeyboardAction
。
Container
中的 removeNotify
public void repaint(long tm, int x, int y, int width, int height)
tm
- 不使用此参数x
- 脏区的 x 值y
- 脏区的 y 值width
- 脏区的宽度height
- 脏区的高度Component.isShowing()
,
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)
public void repaint(Rectangle r)
r
- 包含脏区的 Rectangle
Component.isShowing()
,
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)
public void revalidate()
调用 invalidate
并将此组件的 validateRoot
添加到需要验证的组件列表中。调度完当前所有未完成的事件后进行验证。换句话说,调用此方法后,将验证浏览此组件的包含层次结构时找到的第一个 validateRoot(如果有)。默认情况下,JRootPane
、JScrollPane
和 JTextField
从 isValidateRoot
返回 true。
当属性值更改,从而影响此组件的大小、位置或内部布局时,就对此组件自动调用此方法。这种自动更新不同于 AWT,因为通常来说,程序不再需要调用 validate
来获得要更新的 GUI 的内容。
public boolean isValidateRoot()
revalidate
将导致对从此根开始的整棵树进行验证。默认返回 false。JScrollPane
重写此方法并返回 true。
revalidate()
,
Component.invalidate()
,
Container.validate()
public boolean isOptimizedDrawingEnabled()
JComponent
子类(如 JLayeredPane
)应该重写此方法以返回 false。
public void paintImmediately(int x, int y, int w, int h)
极少需要调用此方法。在大多数情况下,调用 repaint 更为高效,repaint 会推迟实际的绘制并将多余的请求压缩到单个 paint 调用中。如果您需要在调度当前事件的同时更新显示,则此方法是有用的。
x
- 要绘制区域的 x 值y
- 要绘制区域的 y 值w
- 要绘制区域的宽度h
- 要绘制区域的高度repaint(long, int, int, int, int)
public void paintImmediately(Rectangle r)
r
- 包含要绘制区域的 Rectangle
public void setDoubleBuffered(boolean aFlag)
Component
,并且还缓冲了它的某个祖先,则将使用该祖先缓冲区。
aFlag
- 如果为 true,则设置此组件使用双缓冲区进行缓冲public boolean isDoubleBuffered()
Component
中的 isDoubleBuffered
public JRootPane getRootPane()
JRootPane
祖先。
JRootPane
,如果未找到 JRootPane
,则为 null
protected String paramString()
JComponent
的字符串表示形式。此方法仅在进行调试的时候使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可能为空,但不可能为 null
。
Container
中的 paramString
JComponent
的字符串表示形式
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。