|
JavaTM 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) 取代。
将此 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 上按下鼠标以获得焦点,而是希望通过键盘遍历 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;否则返回 falsesetRequestFocusEnabled(boolean),
Focus Specification,
Component.isFocusable()public void requestFocus()
Component 获取输入焦点。有关此方法的完整描述,请参阅 Component.requestFocus()。
注意,不推荐使用此方法,因为其行为与平台有关。建议使用 requestFocusInWindow()。若要了解有关焦点的更多信息,请参阅 The Java Tutorial 中的
How to Use the Focus Subsystem 一节。
Component 中的 requestFocusComponent.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 中的 requestFocustemporary - boolean 值,指示焦点更改是否为临时的
false;如果有可能成功,则返回 trueComponent.requestFocusInWindow(),
Component.requestFocusInWindow(boolean)public boolean requestFocusInWindow()
Component 获取输入焦点。有关此方法的完整描述,请参阅 Component.requestFocusInWindow()。
若要了解有关焦点的更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节。
Component 中的 requestFocusInWindowfalse;如果有可能成功,则返回 trueComponent.requestFocusInWindow(),
Component.requestFocusInWindow(boolean)protected boolean requestFocusInWindow(boolean temporary)
Component 获取输入焦点。有关此方法的完整描述,请参阅 Component.requestFocusInWindow(boolean)。
若要了解有关焦点的更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节。
Component 中的 requestFocusInWindowtemporary - boolean 值,指示焦点更改是否为临时的
false;如果有可能成功,则返回 trueComponent.requestFocusInWindow(),
Component.requestFocusInWindow(boolean)public void grabFocus()
此方法用于焦点实现。客户端代码不应使用此方法;相反,它应该使用 requestFocusInWindow()。
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 中的 getFontMetricsfont - 要获取其字体规格的字体
font 的字体规格
NullPointerException - 如果 font 为 nullComponent.getFont(),
Component.getPeer(),
ComponentPeer.getFontMetrics(Font),
Toolkit.getFontMetrics(Font)public void setPreferredSize(Dimension preferredSize)
preferredSize 为 null,则要求 UI 提供首选大小。
Component 中的 setPreferredSizepreferredSize - 新的首选大小,或者为 nullComponent.getPreferredSize(),
Component.isPreferredSizeSet()public Dimension getPreferredSize()
preferredSize 已设置为一个非 null 值,则返回该值。如果 UI 委托的 getPreferredSize 方法返回一个非 null 值,则返回该值;否则服从组件的布局管理器。
Container 中的 getPreferredSizepreferredSize 属性的值setPreferredSize(java.awt.Dimension),
ComponentUIpublic void setMaximumSize(Dimension maximumSize)
getMaximumSize 的后续调用将始终返回此值;而不要求组件的 UI 计算它。将最大大小设置为 null 可恢复默认行为。
Component 中的 setMaximumSizemaximumSize - 一个包含所需最大允许大小的 DimensiongetMaximumSize()public Dimension getMaximumSize()
null 值,则返回该值。如果 UI 委托的 getMaximumSize 方法返回一个非 null 值,则返回该值;否则服从组件的布局管理器。
Container 中的 getMaximumSizemaximumSize 属性的值setMaximumSize(java.awt.Dimension),
ComponentUIpublic void setMinimumSize(Dimension minimumSize)
getMinimumSize 的后续调用将始终返回此值;不会要求组件的 UI 计算它。将最小大小设置为 null 可恢复默认行为。
Component 中的 setMinimumSizeminimumSize - 此组件新的最小大小getMinimumSize()public Dimension getMinimumSize()
null 值,则返回该值。如果 UI 委托的 getMinimumSize 方法返回一个非 null 值,则返回该值;否则服从组件的布局管理器。
Container 中的 getMinimumSizeminimumSize 属性的值setMinimumSize(java.awt.Dimension),
ComponentUI
public boolean contains(int x,
int y)
Component 中的 containsx - 该点的 x 坐标y - 该点的 y 坐标
Component.contains(int, int),
ComponentUIpublic void setBorder(Border border)
Border 对象负责定义组件的 insets(直接对组件重写所有 insets 设置),并且可选地呈现这些 insets 范围内的边框装饰。要为 swing 组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是 insets)。在单个组件中可使用复合边框来嵌套多个边框。
虽然从技术上讲可以在继承自 JComponent 的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法正常地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel 或 JLabel 上设置边框时,建议将组件放入 JPanel 中,并在 JPanel 上设置边框。
这是一个绑定属性。
border - 要为此组件呈现的边框Border,
CompoundBorderpublic Border getBorder()
null。
setBorder(javax.swing.border.Border)public Insets getInsets()
super.getInsets。
Container 中的 getInsetssetBorder(javax.swing.border.Border)public Insets getInsets(Insets insets)
Insets 对象。如有可能,将重用传入的 Insets 对象。但是不能假定调用这些方法将返回相同的对象。重写此对象内所有现有值。如果 insets 为 null,则此方法将分配一个新的 insets。
insets - Insets 对象,它可以被重用
Insets 对象getInsets()public float getAlignmentY()
Container.getAlignmentY 以返回水平对齐方式。
Container 中的 getAlignmentYalignmentY 属性的值setAlignmentY(float),
Component.getAlignmentY()public void setAlignmentY(float alignmentY)
alignmentY - 新的水平对齐方式getAlignmentY()public float getAlignmentX()
Container.getAlignmentX 以返回垂直对齐方式。
Container 中的 getAlignmentXalignmentX 属性的值setAlignmentX(float),
Component.getAlignmentX()public void setAlignmentX(float alignmentX)
alignmentX - 新的垂直对齐方式getAlignmentX()public void setInputVerifier(InputVerifier inputVerifier)
inputVerifier - 新的输入校验器InputVerifierpublic InputVerifier getInputVerifier()
inputVerifier 属性InputVerifierpublic Graphics getGraphics()
Graphics 对象,然后在该对象上调用操作,以便绘制组件。
Component 中的 getGraphicsComponent.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 和修改键为接收容器注册了某个动作,则 anAction 将取代该动作。
anAction - 要注册的 ActionaCommand - 要在传递的事件中设置的命令aKeyStroke - 与动作绑定的 KeyStrokeaCondition - 要符合的条件,见上文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。
KeyStroke 对象数组registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)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 的 InputMappublic final InputMap getInputMap()
InputMap。这是 getInputMap(WHEN_FOCUSED) 的一个便捷方法。
InputMappublic final void setActionMap(ActionMap am)
ActionMap 设置为 am。此方法不会将 am 的父级设置成 UI 的 ActionMap(如果有),由调用者决定是否这样做。
am - 新的 ActionMappublic final ActionMap getActionMap()
KeyStroke 绑定触发何种 Action 的 ActionMap。除非另行设置,否则返回的 ActionMap 将 UI 的 ActionMap 设置为其父级。
ActionMap
public int getBaseline(int width,
int height)
LayoutManager,以便沿组件的基线对齐组件。返回值小于 0 表示此组件没有合理的基线,并且 LayoutManager 不应该根据该组件的基线来对齐此组件。
此方法调用相同名称的 ComponentUI 方法。如果此组件不具有 ComponentUI,则返回 -1。如果返回大于等于 0 的值,则该组件有一个对于任何大于等于最小大小的大小均有效的基线,并且可以使用 getBaselineResizeBehavior 确定基线如何随大小发生更改。
Component 中的 getBaselinewidth - 适合基线的宽度height - 适合基线的高度
IllegalArgumentException - 如果 width 或 height < 0getBaselineResizeBehavior(),
FontMetricspublic Component.BaselineResizeBehavior getBaselineResizeBehavior()
此方法调用相同名称的 ComponentUI 方法。如果此组件不具有 ComponentUI,则返回 BaselineResizeBehavior.OTHER。子类不应该返回 null;如果无法计算基线,则返回 BaselineResizeBehavior.OTHER。调用者应该首先使用 getBaseline 询问基线,如果返回值大于等于 0,则使用此方法。此方法返回一个 BaselineResizeBehavior.OTHER 以外的值是可以接受的,即使 getBaseline 返回一个小于 0 的值。
Component 中的 getBaselineResizeBehaviorgetBaseline(int, int)@Deprecated public boolean requestDefaultFocus()
FocusTraversalPolicy.getDefaultComponent(Container).requestFocus() 取代
请求此 JComponent FocusTraversalPolicy 的默认 Component 上的焦点。如果此 JComponent 是焦点循环根,则使用其 FocusTraversalPolicy。否则,使用此 JComponent 的焦点循环根祖先的 FocusTraversalPolicy。
FocusTraversalPolicy.getDefaultComponent(java.awt.Container)public void setVisible(boolean aFlag)
Component.setVisible。
Component 中的 setVisibleaFlag - true 使该组件可见;false 使其不可见Component.isVisible()public void setEnabled(boolean enabled)
注:禁用某个组件不会禁用其子组件。
注:禁用轻量组件不会阻止其接收 MouseEvent。
Component 中的 setEnabledenabled - 如果应该启用此组件,则为 true;否则为 falseComponent.isEnabled(),
Component.isLightweight()public void setForeground(Color fg)
Component 中的 setForegroundfg - 所需的前景 ColorComponent.getForeground()public void setBackground(Color bg)
JComponent 或 ComponentUI 实现的子类使用。JComponent 的直接子类必须重写 paintComponent 以遵守此属性。
由外观决定是否遵守此属性,某些外观可以选择忽略它。
Component 中的 setBackgroundbg - 所需的背景 ColorComponent.getBackground(),
setOpaque(boolean)public void setFont(Font font)
Container 中的 setFontfont - 此组件所需的 FontComponent.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 中的 processKeyEvente - 按键事件KeyEvent,
KeyListener,
KeyboardFocusManager,
DefaultKeyboardFocusManager,
Component.processEvent(java.awt.AWTEvent),
Component.dispatchEvent(java.awt.AWTEvent),
Component.addKeyListener(java.awt.event.KeyListener),
Component.enableEvents(long),
Component.isShowing()
protected boolean processKeyBinding(KeyStroke ks,
KeyEvent e,
int condition,
boolean pressed)
KeyEvent e 而调用此方法处理 ks 的键绑定。此方法将获取适当的 InputMap、获取绑定、从 ActionMap 获取动作,然后(如果找到该动作并且已启用该组件)调用 notifyAction 来通知该动作。
ks - 被查询的 KeyStrokee - KeyEventcondition - 为下列值之一:
pressed - 如果键被按下,则为 true
public void setToolTipText(String text)
有关更多信息,请参阅 The Java Tutorial 中的 How to Use Tool Tips。
text - 要显示的字符串;如果 text 为 null,则关闭此组件的工具提示TOOL_TIP_TEXT_KEYpublic String getToolTipText()
setToolTipText 所设置的工具提示字符串。
TOOL_TIP_TEXT_KEYpublic String getToolTipText(MouseEvent event)
setToolTipText 设置的任意字符串。如果组件提供了进一步扩展的 API,以支持不同位置的不同工具提示,则应重写此方法。
public Point getToolTipLocation(MouseEvent event)
null,则 Swing 将选择某个位置。默认实现返回 null。
event - 导致 ToolTipManager 显示工具提示的 MouseEvent
nullpublic Point getPopupLocation(MouseEvent event)
null,则外观将选择一个合适的位置。
event - 触发显示弹出式菜单的 MouseEvent;如果不是因鼠标事件而显示弹出式菜单,则为 null
JPopupMenu 的位置,或者返回 nullpublic JToolTip createToolTip()
JToolTip 实例。组件通常不重写此方法,但是可将其用于以不同的方式显示不同的工具提示。
JToolTippublic void scrollRectToVisible(Rectangle aRect)
scrollRectToVisible() 消息转发到 JComponent 的父组件。可执行该请求的组件(如 JViewport)会重写此方法并执行滚动。
aRect - 可见的 RectangleJViewportpublic 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,
JScrollPanepublic 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 中的 processMouseEvente - 鼠标事件Component.processMouseEvent(java.awt.event.MouseEvent)protected void processMouseMotionEvent(MouseEvent e)
Component 中的 processMouseMotionEvente - the MouseEventMouseEvent@Deprecated public void enable()
java.awt.Component.setEnabled(boolean) 取代。
Component 中的 enable@Deprecated public void disable()
java.awt.Component.setEnabled(boolean) 取代。
Component 中的 disablepublic AccessibleContext getAccessibleContext()
JComponent 关联的 AccessibleContext。此基类所实现的方法返回 null。扩展 JComponent 的类应该实现此方法,以返回与子类关联的 AccessibleContext。
Component 中的 getAccessibleContextJComponent 的 AccessibleContextpublic final Object getClientProperty(Object key)
putClientProperty 添加的属性才返回非 null 值。
key - 查询的内容
nullputClientProperty(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 中的 setFocusTraversalKeysid - 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_KEYSpublic static boolean isLightweightComponent(Component c)
@Deprecated
public void reshape(int x,
int y,
int w,
int h)
Component.setBounds(int, int, int, int) 取代。
移动此组件并调整其大小。
Component 中的 reshapex - 新的水平位置y - 新的垂直位置w - 新的宽度h - 新的高度Component.setBounds(int, int, int, int)public Rectangle getBounds(Rectangle rv)
rv 中并返回 rv。如果 rv 为 null,则分配一个新的 Rectangle。如果调用者不希望在堆上分配一个新的 Rectangle 对象,则这种 getBounds 是很有用的。
Component 中的 getBoundsrv - 返回值,被修改为该组件的边界
rv;如果 rv 为 null,则返回具有此组件边界的新建 Rectanglepublic Dimension getSize(Dimension rv)
rv 中并返回 rv。如果 rv 为 null,则分配一个新的 Dimension 对象。如果调用者不希望在堆上分配一个新的 Dimension 对象,则这种 getSize 是很有用的。
Component 中的 getSizerv - 返回值,被修改为该组件的大小
rvpublic Point getLocation(Point rv)
rv 中并返回 rv。如果 rv 为 null,则分配一个新的 Point。如果调用者不希望在堆上分配一个新的 Point 对象,则这种 getLocation 是很有用的。
Component 中的 getLocationrv - 返回值,被修改为该组件的位置
rvpublic int getX()
component.getBounds().x 或 component.getLocation().x,因为它不会导致任何堆分配。
Component 中的 getXpublic int getY()
component.getBounds().y 或 component.getLocation().y,因为它不会导致任何堆分配。
Component 中的 getYpublic int getWidth()
component.getBounds().width 或 component.getSize().width,因为它不会导致任何堆分配。
Component 中的 getWidthpublic int getHeight()
component.getBounds().height 或 component.getSize().height,因为它不会导致任何堆分配。
Component 中的 getHeightpublic boolean isOpaque()
不透明组件将每个像素绘制在其矩形边界内。透明的组件则仅绘制部分像素或者不绘制任何像素,允许其底层像素“透视出来”。因此,没有完全绘制其像素的组件则提供了一定程度的透明度。
保证总是完全绘制其内容的子类应该重写此方法并返回 true。
Component 中的 isOpaquesetOpaque(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 中的 firePropertyChangepropertyName - 其值已更改的属性oldValue - 该属性以前的值newValue - 该属性的新值
public void firePropertyChange(String propertyName,
int oldValue,
int newValue)
Component 中的 firePropertyChangepropertyName - 其值已更改的属性oldValue - 该属性以前的值newValue - 该属性的新值
public void firePropertyChange(String propertyName,
char oldValue,
char newValue)
Component 复制的描述
Component 中的 firePropertyChangepropertyName - 已改变的属性的编程名称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
VetoableChangeListener 发送相应的 PropertyChangeEvent 时可以调用此方法。
propertyName - 对其进行侦听的属性名称oldValue - 该属性的旧值newValue - 该属性的新值
PropertyVetoException - 如果组件禁止设置该属性public void addVetoableChangeListener(VetoableChangeListener listener)
VetoableChangeListener。为所有属性注册该侦听器。
listener - 要添加的 VetoableChangeListenerpublic void removeVetoableChangeListener(VetoableChangeListener listener)
VetoableChangeListener。此方法移除了一个为所有属性注册的 VetoableChangeListener。
listener - 要移除的 VetoableChangeListenerpublic VetoableChangeListener[] getVetoableChangeListeners()
VetoableChangeListener;如果当前没有注册任何可否决更改侦听器,则返回一个空数组addVetoableChangeListener(java.beans.VetoableChangeListener),
removeVetoableChangeListener(java.beans.VetoableChangeListener)public Container getTopLevelAncestor()
Window 或 Applet);如果尚未将此组件添加到任意容器中,则返回 null。
Container;如果不在任何容器中,则返回 nullpublic void addAncestorListener(AncestorListener listener)
listener,从而当组件或其任意祖先移动,或者变得可见或不可见时该侦听器将收到 AncestorEvent。从包含层次结构中添加或移除组件或其祖先时,也发送这些事件。
listener - 要注册的 AncestorListenerAncestorEventpublic void removeAncestorListener(AncestorListener listener)
listener,使其不再接收 AncestorEvent。
listener - 要移除的 AncestorListeneraddAncestorListener(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 中的 getListenerslistenerType - 所请求的侦听器的类型;此参数应该指定一个从 java.util.EventListener 继承的接口
FooListener 的所有对象所组成的数组;如果尚未添加这样的侦听器,则返回一个空数组
ClassCastException - 如果 listenerType 未指定一个实现 java.util.EventListener 的类或接口getVetoableChangeListeners(),
getAncestorListeners()public void addNotify()
KeyboardAction 事件侦听器设置父组件链。
Container 中的 addNotifyregisterKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)public void removeNotify()
KeyboardAction。
Container 中的 removeNotifyregisterKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)
public void repaint(long tm,
int x,
int y,
int width,
int height)
Component 中的 repainttm - 不使用此参数x - 脏区的 x 值y - 脏区的 y 值width - 脏区的宽度height - 脏区的高度Component.isShowing(),
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)public void repaint(Rectangle r)
r - 包含脏区的 RectangleComponent.isShowing(),
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)public void revalidate()
调用 invalidate 并将此组件的 validateRoot 添加到需要验证的组件列表中。指派完当前所有未完成的事件后进行验证。换句话说,调用此方法后,将验证浏览此组件的包含层次结构时找到的第一个 validateRoot(如果有)。默认情况下,对 JRootPane、JScrollPane 和 JTextField 调用 isValidateRoot 返回 true。
当属性值更改,从而影响此组件的大小、位置或内部布局时,就对此组件自动调用此方法。这种自动更新不同于 AWT,因为通常来说,程序不再需要调用 validate 来获得要更新的 GUI 的内容。
Component.invalidate(),
Container.validate(),
isValidateRoot(),
RepaintManager.addInvalidComponent(javax.swing.JComponent)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 - 包含要绘制区域的 Rectanglepublic void setDoubleBuffered(boolean aFlag)
Component,并且还缓冲了它的某个祖先,则将使用该祖先缓冲区。
aFlag - 如果为 true,则设置此组件使用双缓冲区进行缓冲public boolean isDoubleBuffered()
Component 中的 isDoubleBufferedpublic JRootPane getRootPane()
JRootPane 祖先。
JRootPane;如果未找到 JRootPane,则为 nullprotected String paramString()
JComponent 的字符串表示形式。此方法仅在调试时使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可以为空,但不可以为 null。
Container 中的 paramStringJComponent 的字符串表示形式
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。