傻傻的针织衫 · 分布式事务原理及解决方案 - 夏尔_717 ...· 3 月前 · |
会搭讪的饭盒 · MySQL JSON Path ...· 4 月前 · |
狂野的啄木鸟 · 两个django应用之间的双向通信· 7 月前 · |
温柔的保温杯 · 3CX 路由器和防火墙设置· 1 年前 · |
精明的豆腐 · Hollow cube – 由利本荘市仮想工業団地· 1 年前 · |
public abstract class JComponent
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
包中添加了支持所有 JavaBeans
TM
长期存储的功能。请参见
XMLEncoder
。
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)
registerKeyboardAction
(
ActionListener
anAction,
String
aCommand,
KeyStroke
aKeyStroke,
int aCondition)
此方法现在已过时,对于类似的操作,请结合使用
getActionMap()
和
getInputMap()
。
removeAncestorListener
(
AncestorListener
listener)
注销
listener
,使其不再接收
AncestorEvent
。
removeNotify
()
通知此组件它不再有父组件。
removeVetoableChangeListener
(
VetoableChangeListener
listener)
从侦听器列表移除一个
VetoableChangeListener
。
repaint
(long tm,
int x,
int y,
int width,
int height)
如果要显示组件,则将指定的区域添加到脏区 (dirty region) 列表。
repaint
(
Rectangle
r)
如果要显示该组件,则将指定的区域添加到脏区列表。
boolean
requestDefaultFocus
()
已过时。
从 1.4 版本开始,由
FocusTraversalPolicy.getDefaultComponent(Container).requestFocus()
取代
requestFocus
()
请求此
Component
获取输入焦点。
boolean
requestFocus
(boolean temporary)
请求此
Component
获取输入焦点。
boolean
requestFocusInWindow
()
请求此
Component
获取输入焦点。
protected boolean
requestFocusInWindow
(boolean temporary)
请求此
Component
获取输入焦点。
resetKeyboardActions
()
注销首层
InputMaps
和
ActionMap
中的所有绑定。
reshape
(int x,
int y,
int w,
int h)
已过时。
从 JDK 5 开始,由
Component.setBounds(int, int, int, int)
取代。
移动此组件并调整其大小。
revalidate
()
支持推迟的自动布局。
scrollRectToVisible
(
Rectangle
aRect)
将
scrollRectToVisible()
消息转发到
JComponent
的父组件。
setActionMap
(
ActionMap
am)
将
ActionMap
设置为
am
。
setAlignmentX
(float alignmentX)
设置垂直对齐方式。
setAlignmentY
(float alignmentY)
设置水平对齐方式。
setAutoscrolls
(boolean autoscrolls)
设置
autoscrolls
属性。
setBackground
(
Color
bg)
设置此组件的背景色。
setBorder
(
Border
border)
设置此组件的边框。
setComponentPopupMenu
(
JPopupMenu
popup)
设置此
JComponent
的
JPopupMenu
。
setDebugGraphicsOptions
(int debugOptions)
启用或禁用与组件或其某个子组件内执行的每个图形操作有关的诊断信息。
static void
setDefaultLocale
(
Locale
l)
设置在创建时,用于初始化每个 JComponent 的语言环境属性的默认语言环境。
setDoubleBuffered
(boolean aFlag)
设置此组件是否应该使用缓冲区进行绘制。
setEnabled
(boolean enabled)
设置是否启用此组件。
setFocusTraversalKeys
(int id,
Set
<? extends
AWTKeyStroke
> keystrokes)
设置针对此 Component 的给定遍历操作的焦点遍历键。
setFont
(
Font
font)
设置此组件的字体。
setForeground
(
Color
fg)
设置此组件的前景色。
setInheritsPopupMenu
(boolean value)
设置如果此组件没有分配给它的
JPopupMenu
,那么
getComponentPopupMenu
是否应该委托给其父组件。
setInputMap
(int condition,
InputMap
map)
设置在
map
的
condition
条件下要使用的
InputMap
。
setInputVerifier
(
InputVerifier
inputVerifier)
设置此组件的输入校验器。
setMaximumSize
(
Dimension
maximumSize)
将此组件的最大大小设置为一个常量值。
setMinimumSize
(
Dimension
minimumSize)
将此组件的最小大小设置为一个常量值。
setNextFocusableComponent
(
Component
aComponent)
已过时。
从 1.4 版本开始,由
FocusTraversalPolicy
取代
setOpaque
(boolean isOpaque)
如果为 true,则该组件绘制其边界内的所有像素。
setPreferredSize
(
Dimension
preferredSize)
设置此组件的首选大小。
setRequestFocusEnabled
(boolean requestFocusEnabled)
提供一个关于此
JComponent
是否应该获得焦点的提示。
setToolTipText
(
String
text)
注册要在工具提示中显示的文本。
setTransferHandler
(
TransferHandler
newHandler)
设置
transferHandler
属性;如果该组件不支持数据传输操作,则为
null
。
protected void
setUI
(
ComponentUI
newUI)
设置此组件的外观委托。
setVerifyInputWhenFocusTarget
(boolean verifyInputWhenFocusTarget)
设置该值指示是否在此组件请求焦点前,为当前的焦点所有者调用输入校验器。
setVisible
(boolean aFlag)
使该组件可见或不可见。
unregisterKeyboardAction
(
KeyStroke
aKeyStroke)
此方法现在已过时。
update
(
Graphics
g)
调用
paint
。
updateUI
()
将 UI 属性重置为当前外观的值。
add
,
add
,
add
,
add
,
add
,
addContainerListener
,
addImpl
,
addPropertyChangeListener
,
addPropertyChangeListener
,
applyComponentOrientation
,
areFocusTraversalKeysSet
,
countComponents
,
deliverEvent
,
doLayout
,
findComponentAt
,
findComponentAt
,
getComponent
,
getComponentAt
,
getComponentAt
,
getComponentCount
,
getComponents
,
getComponentZOrder
,
getContainerListeners
,
getFocusTraversalKeys
,
getFocusTraversalPolicy
,
getLayout
,
getMousePosition
,
insets
,
invalidate
,
isAncestorOf
,
isFocusCycleRoot
,
isFocusCycleRoot
,
isFocusTraversalPolicyProvider
,
isFocusTraversalPolicySet
,
layout
,
list
,
list
,
locate
,
minimumSize
,
paintComponents
,
preferredSize
,
printComponents
,
processContainerEvent
,
processEvent
,
remove
,
remove
,
removeAll
,
removeContainerListener
,
setComponentZOrder
,
setFocusCycleRoot
,
setFocusTraversalPolicy
,
setFocusTraversalPolicyProvider
,
setLayout
,
transferFocusBackward
,
transferFocusDownCycle
,
validate
,
validateTree
action
,
add
,
addComponentListener
,
addFocusListener
,
addHierarchyBoundsListener
,
addHierarchyListener
,
addInputMethodListener
,
addKeyListener
,
addMouseListener
,
addMouseMotionListener
,
addMouseWheelListener
,
bounds
,
checkImage
,
checkImage
,
coalesceEvents
,
contains
,
createImage
,
createImage
,
createVolatileImage
,
createVolatileImage
,
disableEvents
,
dispatchEvent
,
enable
,
enableEvents
,
enableInputMethods
,
firePropertyChange
,
firePropertyChange
,
firePropertyChange
,
firePropertyChange
,
firePropertyChange
,
firePropertyChange
,
getBackground
,
getBounds
,
getColorModel
,
getComponentListeners
,
getComponentOrientation
,
getCursor
,
getDropTarget
,
getFocusCycleRootAncestor
,
getFocusListeners
,
getFocusTraversalKeysEnabled
,
getFont
,
getForeground
,
getGraphicsConfiguration
,
getHierarchyBoundsListeners
,
getHierarchyListeners
,
getIgnoreRepaint
,
getInputContext
,
getInputMethodListeners
,
getInputMethodRequests
,
getKeyListeners
,
getLocale
,
getLocation
,
getLocationOnScreen
,
getMouseListeners
,
getMouseMotionListeners
,
getMousePosition
,
getMouseWheelListeners
,
getName
,
getParent
,
getPeer
,
getPropertyChangeListeners
,
getPropertyChangeListeners
,
getSize
,
getToolkit
,
getTreeLock
,
gotFocus
,
handleEvent
,
hasFocus
,
hide
,
imageUpdate
,
inside
,
isBackgroundSet
,
isCursorSet
,
isDisplayable
,
isEnabled
,
isFocusable
,
isFocusOwner
,
isFocusTraversable
,
isFontSet
,
isForegroundSet
,
isLightweight
,
isMaximumSizeSet
,
isMinimumSizeSet
,
isPreferredSizeSet
,
isShowing
,
isValid
,
isVisible
,
keyDown
,
keyUp
,
list
,
list
,
list
,
location
,
lostFocus
,
mouseDown
,
mouseDrag
,
mouseEnter
,
mouseExit
,
mouseMove
,
mouseUp
,
move
,
nextFocus
,
paintAll
,
postEvent
,
prepareImage
,
prepareImage
,
processComponentEvent
,
processFocusEvent
,
processHierarchyBoundsEvent
,
processHierarchyEvent
,
processInputMethodEvent
,
processMouseWheelEvent
,
remove
,
removeComponentListener
,
removeFocusListener
,
removeHierarchyBoundsListener
,
removeHierarchyListener
,
removeInputMethodListener
,
removeKeyListener
,
removeMouseListener
,
removeMouseMotionListener
,
removeMouseWheelListener
,
removePropertyChangeListener
,
removePropertyChangeListener
,
repaint
,
repaint
,
repaint
,
resize
,
resize
,
setBounds
,
setBounds
,
setComponentOrientation
,
setCursor
,
setDropTarget
,
setFocusable
,
setFocusTraversalKeysEnabled
,
setIgnoreRepaint
,
setLocale
,
setLocation
,
setLocation
,
setName
,
setSize
,
setSize
,
show
,
show
,
size
,
toString
,
transferFocus
,
transferFocusUpCycle
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
public static final int
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
registerKeyboardAction
的常量,意味着当接收组件是获得焦点的组件的祖先或者其本身就是获得焦点的组件时,应该调用命令。
registerKeyboardAction
的常量,意味着当接收组件处于获得焦点的窗口内或者其本身就是获得焦点的组件时,应该调用命令。
JComponent
构造方法。除调用
Container
构造方法外,此构造方法几乎不进行初始化工作。例如,初始布局管理器为
null
。但是,它将组件的语言环境属性设置为
JComponent.getDefaultLocale
所返回的值。
getDefaultLocale()
JPopupMenu
,那么
getComponentPopupMenu
是否应该委托给其父组件。
此方法的默认值是 false,但是某些作为多个
JComponent
实现的
JComponent
子类可能将其设置为 true。
这是一个绑定 (bound) 属性。
public void
setComponentPopupMenu
(
JPopupMenu
popup)
JComponent
的
JPopupMenu
。UI 负责注册绑定并添加必要的侦听器,这样可在恰当的时间显示
JPopupMenu
。何时显示
JPopupMenu
取决于外观:有些在鼠标事件中显示它,另一些则启用键绑定。
如果
popup
为 null,并且
getInheritsPopupMenu
返回 true,则将
getComponentPopupMenu
委托给父级。这将允许所有子组件继承父组件的 popupmenu。
这是一个绑定属性。
protected void
setUI
(
ComponentUI
newUI)
JComponent
子类通常重写此方法,以缩小参数类型。例如,在
JSlider
中:
public void setUI(SliderUI newUI) {
super.setUI(newUI);
此外,
JComponent
子类必须提供一个返回正确类型的
getUI
方法。例如:
public SliderUI getUI() {
return (SliderUI)ui;
protected void
paintComponent
(
Graphics
g)
null
,则调用该 UI 委托的 paint 方法。向该委托传递
Graphics
对象的副本,以保护其余的 paint 代码免遭不可取消的更改(例如
Graphics.translate
)。
如果在子类中重写此方法,则不应该对传入的
Graphics
进行永久更改。例如,不应更改剪贴区的
Rectangle
或修改转换。如果需要进行这些操作,您会发现根据传入的
Graphics
创建一个新
Graphics
并进行操作更加方便。另外,如果不调用超类的实现,则必须遵守不透明属性,也就是说,如果此组件是不透明的,则必须以透明的颜色完全填充背景。如果不遵守不透明属性,则很可能看到可视的人为内容。
传入的
Graphics
对象可能安装了恒等转换以外的转换。在这种情况下,如果多次应用其他转换,则可能得到不可预料的结果。
public void
update
(
Graphics
g)
paint
。不清除背景,而是查看
ComponentUI.update
,它由
paintComponent
调用。
Container
中的
update
g
- 在其中进行绘制的
Graphics
上下文
paint(java.awt.Graphics)
,
paintComponent(java.awt.Graphics)
,
ComponentUI
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)
g
- 在其中进行绘制的
Graphics
上下文
print(java.awt.Graphics)
,
printComponent(java.awt.Graphics)
,
printBorder(java.awt.Graphics)
,
printChildren(java.awt.Graphics)
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()
print
操作的一部分,则返回
true
。当想要定制所打印的内容以及在屏幕上显示的内容时,此方法很有用。
通过侦听此组件上名为
"paintingForPrint"
的属性更改事件,可以检测此属性值中的更改。
注:此方法也提供其他高级别 Swing 打印 API 所提供的功能。但是,它严格处理绘制操作,不要因为高级别打印进程上提供的信息相混淆。例如,
JTable.print()
操作不一定会连续呈现完整的组件,此方法的返回值在该操作中可多次更改。组件甚至有可能在打印进程正在进行时便绘制到屏幕。在这种情况下,当且仅当该表作为打印进程的一部分进行绘制时,此方法的返回值为
true
。
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
FocusTraversalPolicy
取代
JComponent
的焦点遍历循环重写默认的
FocusTraversalPolicy
:无条件地将指定的
Component
设置为循环中的下一个
Component
,并将此
JComponent
设置为循环中指定
Component
的前一个
Component
。
aComponent
- 焦点遍历循环中应该跟在此
JComponent
后的
Component
getNextFocusableComponent()
,
FocusTraversalPolicy
FocusTraversalPolicy
取代。
JComponent
调用
setNextFocusableComponent(Component)
所设置的
Component
。
public void
setRequestFocusEnabled
(boolean requestFocusEnabled)
JComponent
是否应该获得焦点的提示。这只是一个提示,由使用者决定请求焦点是否遵守此属性。鼠标操作通常遵守此属性,而键盘操作则并非如此。例如,在鼠标操作期间,外观可以在请求焦点前验证此属性是否为 true。如果不想在
JComponent
上按下鼠标以获得焦点,而是希望通过键盘遍历
JComponent
,则要多次使用此方法。如果不希望此
JComponent
可聚焦,请使用
setFocusable
方法。
有关更多信息,请参阅
The Java Tutorial
中的
How to Use the Focus Subsystem
一节。
true
;否则返回
false
setRequestFocusEnabled(boolean)
,
Focus Specification
,
Component.isFocusable()
Component
获取输入焦点。有关此方法的完整描述,请参阅
Component.requestFocus()
。
注意,不推荐使用此方法,因为其行为与平台有关。建议使用
requestFocusInWindow()
。若要了解有关焦点的更多信息,请参阅
The Java Tutorial
中的
How to Use the Focus Subsystem
一节。
Component
中的
requestFocus
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
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)
Component
获取输入焦点。有关此方法的完整描述,请参阅
Component.requestFocusInWindow()
。
若要了解有关焦点的更多信息,请参阅
The Java Tutorial
中的
How to Use the Focus Subsystem
一节。
Component
中的
requestFocusInWindow
false
;如果有可能成功,则返回
true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
Component
获取输入焦点。有关此方法的完整描述,请参阅
Component.requestFocusInWindow(boolean)
。
若要了解有关焦点的更多信息,请参阅
The Java Tutorial
中的
How to Use the Focus Subsystem
一节。
Component
中的
requestFocusInWindow
temporary
- boolean 值,指示焦点更改是否为临时的
false
;如果有可能成功,则返回
true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
requestFocusInWindow()
。
setVerifyInputWhenFocusTarget
public void
setVerifyInputWhenFocusTarget
(boolean verifyInputWhenFocusTarget)
verifyInputWhenFocusTarget
-
verifyInputWhenFocusTarget
属性的值
InputVerifier
,
setInputVerifier(javax.swing.InputVerifier)
,
getInputVerifier()
,
getVerifyInputWhenFocusTarget()
preferredSize
为
null
,则要求 UI 提供首选大小。
Component
中的
setPreferredSize
preferredSize
- 新的首选大小,或者为 null
Component.getPreferredSize()
,
Component.isPreferredSizeSet()
preferredSize
已设置为一个非
null
值,则返回该值。如果 UI 委托的
getPreferredSize
方法返回一个非
null
值,则返回该值;否则服从组件的布局管理器。
Container
中的
getPreferredSize
preferredSize
属性的值
setPreferredSize(java.awt.Dimension)
,
ComponentUI
getMaximumSize
的后续调用将始终返回此值;而不要求组件的 UI 计算它。将最大大小设置为
null
可恢复默认行为。
Component
中的
setMaximumSize
maximumSize
- 一个包含所需最大允许大小的
Dimension
getMaximumSize()
null
值,则返回该值。如果 UI 委托的
getMaximumSize
方法返回一个非
null
值,则返回该值;否则服从组件的布局管理器。
Container
中的
getMaximumSize
maximumSize
属性的值
setMaximumSize(java.awt.Dimension)
,
ComponentUI
getMinimumSize
的后续调用将始终返回此值;不会要求组件的 UI 计算它。将最小大小设置为
null
可恢复默认行为。
Component
中的
setMinimumSize
minimumSize
- 此组件新的最小大小
getMinimumSize()
null
值,则返回该值。如果 UI 委托的
getMinimumSize
方法返回一个非
null
值,则返回该值;否则服从组件的布局管理器。
Container
中的
getMinimumSize
minimumSize
属性的值
setMinimumSize(java.awt.Dimension)
,
ComponentUI
x
- 该点的
x
坐标
y
- 该点的
y
坐标
Component.contains(int, int)
,
ComponentUI
Border
对象负责定义组件的 insets(直接对组件重写所有 insets 设置),并且可选地呈现这些 insets 范围内的边框装饰。要为 swing 组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是 insets)。在单个组件中可使用复合边框来嵌套多个边框。
虽然从技术上讲可以在继承自
JComponent
的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法正常地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是
JPanel
或
JLabel
上设置边框时,建议将组件放入
JPanel
中,并在
JPanel
上设置边框。
这是一个绑定属性。
public
Graphics
getGraphics
()
Graphics
对象,然后在该对象上调用操作,以便绘制组件。
Component
中的
getGraphics
Component.paint(java.awt.Graphics)
ExternalWindow
,显示在 View 的脱屏缓冲区上执行的操作。
debugOptions
按位或运算的结果
ExternalWindow
,显示在 View 的脱屏缓冲区上执行的操作。
setDebugGraphicsOptions(int)
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
可以为:
anAction
将取代该动作。
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
中移除绑定。
getActionForKeyStroke
public
ActionListener
getActionForKeyStroke
(
KeyStroke
aKeyStroke)
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
不是上面指定的合法值之一
condition
- WHEN_IN_FOCUSED_WINDOW、WHEN_FOCUSED、WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 之一
condition
的
InputMap
LayoutManager
,以便沿组件的基线对齐组件。返回值小于 0 表示此组件没有合理的基线,并且
LayoutManager
不应该根据该组件的基线来对齐此组件。
此方法调用相同名称的
ComponentUI
方法。如果此组件不具有
ComponentUI
,则返回 -1。如果返回大于等于 0 的值,则该组件有一个对于任何大于等于最小大小的大小均有效的基线,并且可以使用
getBaselineResizeBehavior
确定基线如何随大小发生更改。
Component
中的
getBaseline
width
- 适合基线的宽度
height
- 适合基线的高度
IllegalArgumentException
- 如果 width 或 height < 0
getBaselineResizeBehavior()
,
FontMetrics
ComponentUI
方法。如果此组件不具有
ComponentUI
,则返回
BaselineResizeBehavior.OTHER
。子类不应该返回
null
;如果无法计算基线,则返回
BaselineResizeBehavior.OTHER
。调用者应该首先使用
getBaseline
询问基线,如果返回值大于等于 0,则使用此方法。此方法返回一个
BaselineResizeBehavior.OTHER
以外的值是可以接受的,即使
getBaseline
返回一个小于 0 的值。
Component
中的
getBaselineResizeBehavior
getBaseline(int, int)
FocusTraversalPolicy.getDefaultComponent(Container).requestFocus()
取代
JComponent
FocusTraversalPolicy
的默认
Component
上的焦点。如果此
JComponent
是焦点循环根,则使用其
FocusTraversalPolicy
。否则,使用此
JComponent
的焦点循环根祖先的
FocusTraversalPolicy
。
public void
setEnabled
(boolean enabled)
注:禁用某个组件不会禁用其子组件。
注:禁用轻量组件不会阻止其接收 MouseEvent。
Component
中的
setEnabled
enabled
- 如果应该启用此组件,则为 true;否则为 false
Component.isEnabled()
,
Component.isLightweight()
JComponent
或
ComponentUI
实现的子类使用。
JComponent
的直接子类必须重写
paintComponent
以遵守此属性。
由外观决定是否遵守此属性,某些外观可以选择忽略它。
Component
中的
setBackground
bg
- 所需的背景
Color
Component.getBackground()
,
setOpaque(boolean)
KeyboardFocusManager
,
DefaultKeyboardFocusManager
,
Component.processEvent(java.awt.AWTEvent)
,
Component.dispatchEvent(java.awt.AWTEvent)
,
Component.addKeyListener(java.awt.event.KeyListener)
,
Component.enableEvents(long)
,
Component.isShowing()
pressed
- 如果键被按下,则为 true
event
- 触发显示弹出式菜单的
MouseEvent
;如果不是因鼠标事件而显示弹出式菜单,则为
null
JPopupMenu
的位置,或者返回
null
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
transferHandler
属性;如果该组件不支持数据传输操作,则为
null
。
如果
newHandler
不为
null
并且系统属性
suppressSwingDropSupport
不为 true,则此方法将在
JComponent
上安装一个
DropTarget
。该系统属性的默认值为 false,所以将添加一个
DropTarget
。
有关更多信息,请参阅
The Java Tutorial
中的
How to Use Drag and Drop and Data Transfer
一节。
protected void
processMouseEvent
(
MouseEvent
e)
MouseListener
对象来完成,有关此方法的完整描述,请参阅
Component.processMouseEvent(MouseEvent)
。
Component
中的
processMouseEvent
e
- 鼠标事件
Component.processMouseEvent(java.awt.event.MouseEvent)
Component
中的
processMouseMotionEvent
e
- the
MouseEvent
MouseEvent
java.awt.Component.setEnabled(boolean)
取代。
Component
中的
enable
java.awt.Component.setEnabled(boolean)
取代。
Component
中的
disable
JComponent
关联的
AccessibleContext
。此基类所实现的方法返回 null。扩展
JComponent
的类应该实现此方法,以返回与子类关联的
AccessibleContext
。
Component
中的
getAccessibleContext
JComponent
的
AccessibleContext
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)
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
rv
中并返回
rv
。如果
rv
为
null
,则分配一个新的
Rectangle
。如果调用者不希望在堆上分配一个新的
Rectangle
对象,则这种
getBounds
是很有用的。
Component
中的
getBounds
rv
- 返回值,被修改为该组件的边界
rv
;如果
rv
为
null
,则返回具有此组件边界的新建
Rectangle
rv
中并返回
rv
。如果
rv
为
null
,则分配一个新的
Dimension
对象。如果调用者不希望在堆上分配一个新的
Dimension
对象,则这种
getSize
是很有用的。
Component
中的
getSize
rv
- 返回值,被修改为该组件的大小
rv
rv
中并返回
rv
。如果
rv
为
null
,则分配一个新的
Point
。如果调用者不希望在堆上分配一个新的
Point
对象,则这种
getLocation
是很有用的。
Component
中的
getLocation
rv
- 返回值,被修改为该组件的位置
rv
component.getBounds().x
或
component.getLocation().x
,因为它不会导致任何堆分配。
Component
中的
getX
component.getBounds().y
或
component.getLocation().y
,因为它不会导致任何堆分配。
Component
中的
getY
component.getBounds().width
或
component.getSize().width
,因为它不会导致任何堆分配。
Component
中的
getWidth
component.getBounds().height
或
component.getSize().height
,因为它不会导致任何堆分配。
Component
中的
getHeight
Component
中的
isOpaque
setOpaque(boolean)
JComponent
而言,此属性的默认值是 false。但是对于大多数标准的
JComponent
子类(如
JButton
和
JTree
),此属性的默认值与外观有关。
boolean newValue)
Component
中的
firePropertyChange
propertyName
- 其值已更改的属性
oldValue
- 该属性以前的值
newValue
- 该属性的新值
Component
中的
firePropertyChange
propertyName
- 其值已更改的属性
oldValue
- 该属性以前的值
newValue
- 该属性的新值
VetoableChangeListener
发送相应的
PropertyChangeEvent
时可以调用此方法。
addVetoableChangeListener
public void
addVetoableChangeListener
(
VetoableChangeListener
listener)
VetoableChangeListener
。为所有属性注册该侦听器。
removeVetoableChangeListener
public void
removeVetoableChangeListener
(
VetoableChangeListener
listener)
VetoableChangeListener
。此方法移除了一个为所有属性注册的
VetoableChangeListener
。
VetoableChangeListener
;如果当前没有注册任何可否决更改侦听器,则返回一个空数组
addVetoableChangeListener(java.beans.VetoableChangeListener)
,
removeVetoableChangeListener(java.beans.VetoableChangeListener)
AncestorListener
;如果当前没有注册任何祖先侦听器,则返回一个空数组
addAncestorListener(javax.swing.event.AncestorListener)
,
removeAncestorListener(javax.swing.event.AncestorListener)
listenerType
参数,如
Foo
Listener.class
。例如,可以使用以下代码来查询
JComponent
c
的鼠标侦听器:
MouseListener[] mls = (MouseListener[])(c.getListeners(MouseListener.class));如果不存在这样的侦听器,则此方法将返回一个空数组。
Container
中的
getListeners
listenerType
- 所请求的侦听器的类型;此参数应该指定一个从
java.util.EventListener
继承的接口
Foo
Listener
的所有对象所组成的数组;如果尚未添加这样的侦听器,则返回一个空数组
ClassCastException
- 如果
listenerType
未指定一个实现
java.util.EventListener
的类或接口
getVetoableChangeListeners()
,
getAncestorListeners()
tm
- 不使用此参数
x
- 脏区的 x 值
y
- 脏区的 y 值
width
- 脏区的宽度
height
- 脏区的高度
Component.isShowing()
,
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)
invalidate
并将此组件的
validateRoot
添加到需要验证的组件列表中。指派完当前所有未完成的事件后进行验证。换句话说,调用此方法后,将验证浏览此组件的包含层次结构时找到的第一个 validateRoot(如果有)。默认情况下,对
JRootPane
、
JScrollPane
和
JTextField
调用
isValidateRoot
返回 true。
当属性值更改,从而影响此组件的大小、位置或内部布局时,就对此组件自动调用此方法。这种自动更新不同于 AWT,因为通常来说,程序不再需要调用
validate
来获得要更新的 GUI 的内容。
protected
String
paramString
()
JComponent
的字符串表示形式。此方法仅在调试时使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可以为空,但不可以为
null
。
Container
中的
paramString
JComponent
的字符串表示形式
狂野的啄木鸟 · 两个django应用之间的双向通信 7 月前 |
温柔的保温杯 · 3CX 路由器和防火墙设置 1 年前 |
精明的豆腐 · Hollow cube – 由利本荘市仮想工業団地 1 年前 |