|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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'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
- - 分配给此组件的弹出菜单,可以为 null
getComponentPopupMenu()
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); }
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)
,
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
调用。
Container
中的
update
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
。
Container
中的
paint
g
- 在其中进行绘制的
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
中的
printAll
g
- 在其中进行绘制的
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
中的
print
g
- 在其中进行绘制的
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
)
,
SortingFocusTraversalPolicy
@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()
。若要了解有关焦点的更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节。
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)
。
若要了解有关焦点的更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节。
Component
中的
requestFocusInWindow
temporary
- boolean 值,指示焦点更改是否为临时的
false
;如果有可能成功,则返回
true
Component.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
中的
getFontMetrics
font
- 要获取其字体规格的字体
font
的字体规格
NullPointerException
- 如果
font
为 null
Component.getFont()
,
Component.getPeer()
,
ComponentPeer.getFontMetrics(Font)
,
Toolkit.getFontMetrics(Font)
public void setPreferredSize(Dimension preferredSize)
preferredSize
为
null
,则要求 UI 提供首选大小。
Component
中的
setPreferredSize
preferredSize
- 新的首选大小,或者为 null
Component.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)
Component
中的
contains
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
上设置边框。
这是一个绑定属性。
border
- 要为此组件呈现的边框
Border
,
CompoundBorder
public Border getBorder()
null
。
setBorder(javax.swing.border.Border)
public Insets getInsets()
super.getInsets
。
Container
中的
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 和修改键为接收容器注册了某个动作,则 anAction
将取代该动作。
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
。
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
的
InputMap
public final InputMap getInputMap()
InputMap
。这是
getInputMap(WHEN_FOCUSED)
的一个便捷方法。
InputMap
public final void setActionMap(ActionMap am)
ActionMap
设置为
am
。此方法不会将
am
的父级设置成 UI 的
ActionMap
(如果有),由调用者决定是否这样做。
am
- 新的
ActionMap
public 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
中的
getBaseline
width
- 适合基线的宽度
height
- 适合基线的高度
IllegalArgumentException
- 如果 width 或 height < 0
getBaselineResizeBehavior()
,
FontMetrics
public Component.BaselineResizeBehavior getBaselineResizeBehavior()
此方法调用相同名称的 ComponentUI
方法。如果此组件不具有 ComponentUI
,则返回 BaselineResizeBehavior.OTHER
。子类不应该返回 null
;如果无法计算基线,则返回 BaselineResizeBehavior.OTHER
。调用者应该首先使用 getBaseline
询问基线,如果返回值大于等于 0,则使用此方法。此方法返回一个 BaselineResizeBehavior.OTHER
以外的值是可以接受的,即使 getBaseline
返回一个小于 0 的值。
Component
中的
getBaselineResizeBehavior
getBaseline(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
中的
setVisible
aFlag
- true 使该组件可见;false 使其不可见
Component.isVisible()
public void setEnabled(boolean enabled)
注:禁用某个组件不会禁用其子组件。
注:禁用轻量组件不会阻止其接收 MouseEvent。
Component
中的
setEnabled
enabled
- 如果应该启用此组件,则为 true;否则为 false
Component.isEnabled()
,
Component.isLightweight()
public void setForeground(Color fg)
Component
中的
setForeground
fg
- 所需的前景
Color
Component.getForeground()
public void setBackground(Color bg)
JComponent
或
ComponentUI
实现的子类使用。
JComponent
的直接子类必须重写
paintComponent
以遵守此属性。
由外观决定是否遵守此属性,某些外观可以选择忽略它。
Component
中的
setBackground
bg
- 所需的背景
Color
Component.getBackground()
,
setOpaque(boolean)
public void setFont(Font font)
Container
中的
setFont
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
e
- 按键事件
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
- 被查询的
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
JPopupMenu
的位置,或者返回
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,则在将鼠标拖动到组件的边界外并且继续按下鼠标按键时,生成人为鼠标拖动事件;否则为 false
getAutoscrolls()
,
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()
java.awt.Component.setEnabled(boolean)
取代。
Component
中的
enable
@Deprecated public void disable()
java.awt.Component.setEnabled(boolean)
取代。
Component
中的
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
)
。
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)
取代。
移动此组件并调整其大小。
Component
中的
reshape
x
- 新的水平位置
y
- 新的垂直位置
w
- 新的宽度
h
- 新的高度
Component.setBounds(int, int, int, int)
public Rectangle getBounds(Rectangle rv)
rv
中并返回
rv
。如果
rv
为
null
,则分配一个新的
Rectangle
。如果调用者不希望在堆上分配一个新的
Rectangle
对象,则这种
getBounds
是很有用的。
Component
中的
getBounds
rv
- 返回值,被修改为该组件的边界
rv
;如果
rv
为
null
,则返回具有此组件边界的新建
Rectangle
public Dimension getSize(Dimension rv)
rv
中并返回
rv
。如果
rv
为
null
,则分配一个新的
Dimension
对象。如果调用者不希望在堆上分配一个新的
Dimension
对象,则这种
getSize
是很有用的。
Component
中的
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
,因为它不会导致任何堆分配。
Component
中的
getX
public int getY()
component.getBounds().y
或
component.getLocation().y
,因为它不会导致任何堆分配。
Component
中的
getY
public int getWidth()
component.getBounds().width
或
component.getSize().width
,因为它不会导致任何堆分配。
Component
中的
getWidth
public int getHeight()
component.getBounds().height
或
component.getSize().height
,因为它不会导致任何堆分配。
Component
中的
getHeight
public boolean isOpaque()
不透明组件将每个像素绘制在其矩形边界内。透明的组件则仅绘制部分像素或者不绘制任何像素,允许其底层像素“透视出来”。因此,没有完全绘制其像素的组件则提供了一定程度的透明度。
保证总是完全绘制其内容的子类应该重写此方法并返回 true。
Component
中的
isOpaque
setOpaque(boolean)
public void setOpaque(boolean isOpaque)
对于 JComponent
而言,此属性的默认值是 false。但是对于大多数标准的 JComponent
子类(如 JButton
和 JTree
),此属性的默认值与外观有关。
isOpaque
- 如果此组件应该是不透明的,则为 true
isOpaque()
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
VetoableChangeListener
发送相应的
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
,从而当组件或其任意祖先移动,或者变得可见或不可见时该侦听器将收到
AncestorEvent
。从包含层次结构中添加或移除组件或其祖先时,也发送这些事件。
listener
- 要注册的
AncestorListener
AncestorEvent
public void removeAncestorListener(AncestorListener listener)
listener
,使其不再接收
AncestorEvent
。
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
事件侦听器设置父组件链。
Container
中的
addNotify
registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)
public void removeNotify()
KeyboardAction
。
Container
中的
removeNotify
registerKeyboardAction(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
中的
repaint
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 的内容。
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
- 包含要绘制区域的
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 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。