public class DefaultCaret extends Rectangle implements Caret, FocusListener, MouseListener, MouseMotionListener
此实现预计两个异步通知源。计时器线程异步的原因火灾,插入简单的重画最近的包围盒。插入符号还跟踪变化的文件被修改。通常情况下,这将发生在事件调度线程上,作为一些鼠标或键盘事件的结果。在同步和异步文件的更新是通过UpdatePolicy
属性控制插入的行为。重绘的新插入的位置将在任何情况下发生的事件线程,调用modelToView
是唯一安全的事件线程。
插入符号作为一个鼠标和专注的听众文本组件已安装,并定义了基于事件语义的符号。侦听器方法可以重新改变语义。默认情况下,第一个鼠标按钮将用来设置焦点和插入符号的位置。鼠标拖动鼠标指针与第一个鼠标按钮将扫出一个在模型中是连续的选择。如果相关的文字部分编辑、插入符号将成为可见的焦点时得到的,和看不见的时候失去了焦点。
亮点绑定到相关的文本组件用于缺席的选择。选择外观可以定制,提供一个画家使用的亮点。默认情况下,会使画家用纯色在相关文本组件在SelectionColor
属性指定。这可以很容易地通过重载getSelectionPainter
方法改变。
一个定制的符号的外观可以重新油漆的方法实现。如果油漆的方法发生了改变,损伤的方法也应重新引起油漆需要渲染符号区。插入符号扩展矩形类,用于保存的包围盒,插入最后渲染。这使得符号重绘以线程安全的方式插入动作时没有打电话给modeltoview不稳定模型和视图之间的更新修复(即顺序输送到documentlisteners不保证)。
神奇的插入位置设置为null时,插入符号位置的变化。定时器是用来确定新的位置(插入符号变化后)。当定时器,如果魔法符号位置仍然空是复位到当前插入符号位置。任何行为改变的插入位置和想要的魔法符号位置保持不变,必须记住几个神奇的插入位置,改变光标,然后设置魔法符号位置到其原始值。这样做的好处,只有行动,要用魔法符号位置坚持(如打开/关闭)需要了解它。
警告:序列化该类的对象与以后的Swing版本不兼容。当前的序列化支持适用于短期贮藏或RMI运行相同Swing版本的应用程序之间。为1.4,为所有JavaBeans™长期存储的支持已被添加到java.beans
包。请看XMLEncoder
。
Caret
Rectangle2D.Double, Rectangle2D.Float
Modifier and Type | Field and Description |
---|---|
static int |
ALWAYS_UPDATE
表明,插入的位置是
总是更新相应的文件的变化,不管文档更新在事件分发线程或不执行。
|
protected ChangeEvent |
changeEvent
模型的更改事件。
|
protected EventListenerList |
listenerList
事件侦听器列表。
|
static int |
NEVER_UPDATE
表示符号应保持在文档中的相同的绝对位置无论任何文档的更新,除非文件长度变得小于由于去除当前插入符号位置。
|
static int |
UPDATE_WHEN_ON_EDT
表明插入位置是更新只有当文件变化的事件调度线程执行。
|
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
Constructor and Description |
---|
DefaultCaret()
构建一个默认的符号。
|
Modifier and Type | Method and Description |
---|---|
void |
addChangeListener(ChangeListener l)
添加一个监听器跟踪每次插入位置已经改变。
|
protected void |
adjustVisibility(Rectangle nloc)
卷轴的关联视图(如果需要)使符号可见。
|
protected void |
damage(Rectangle r)
损害周围地区的符号加以重新粉刷一新的位置。
|
void |
deinstall(JTextComponent c)
打电话的时候,用户界面是从一个jtextcomponent界面删除。
|
boolean |
equals(Object obj)
将此对象与指定的对象进行比较。
|
protected void |
fireStateChanged()
通知所有的听众,关于这一事件的类型通知已注册的兴趣。
|
void |
focusGained(FocusEvent e)
当含有插入增益组件焦点。
|
void |
focusLost(FocusEvent e)
含插入组件失去焦点时。
|
int |
getBlinkRate()
获取符号闪烁速度。
|
ChangeListener[] |
getChangeListeners()
返回所有改变听众这符号注册一个数组。
|
protected JTextComponent |
getComponent()
获取文本编辑器组件,这个符号是必然。
|
int |
getDot()
获取当前位置的符号。
|
Position.Bias |
getDotBias()
返回的插入位置的偏差。
|
<T extends EventListener> |
getListeners(类<T> listenerType)
返回对象的当前注册为
FooListener s在此插入数组。
|
Point |
getMagicCaretPosition()
被保存的插入位置。
|
int |
getMark()
获取当前位置的标记。
|
Position.Bias |
getMarkBias()
返回标记的偏移。
|
protected Highlighter.HighlightPainter |
getSelectionPainter()
获取用于荧光笔的画家。
|
int |
getUpdatePolicy()
获取文件的更新符号运动政策。
|
void |
install(JTextComponent c)
当UI被安装到一个jtextcomponent接口。
|
boolean |
isActive()
决定如果插入当前是活动的。
|
boolean |
isSelectionVisible()
检查当前的选择是否可见。
|
boolean |
isVisible()
指示是否插入当前可见。
|
void |
mouseClicked(MouseEvent e)
当鼠标单击时调用。
|
void |
mouseDragged(MouseEvent e)
将插入符号的位置,根据鼠标指针的当前位置。
|
void |
mouseEntered(MouseEvent e)
当鼠标进入一个区域时调用。
|
void |
mouseExited(MouseEvent e)
当鼠标退出区域时调用。
|
void |
mouseMoved(MouseEvent e)
鼠标移动时调用。
|
void |
mousePressed(MouseEvent e)
如果按钮1按下,这是实现要求的相关文本组件的焦点,并设置插入符号的位置。
|
void |
mouseReleased(MouseEvent e)
鼠标被释放时调用。
|
protected void |
moveCaret(MouseEvent e)
试图移动插入符号的位置从一个鼠标事件的坐标,利用viewtomodel()。
|
void |
moveDot(int dot)
将插入符号的位置到指定的位置,一个正向偏置。
|
void |
moveDot(int dot, Position.Bias dotBias)
将插入符号的位置到指定位置,用指定的偏置。
|
void |
paint(Graphics g)
将插入符号作为垂直线。
|
protected void |
positionCaret(MouseEvent e)
试图设置插入符号的位置从一个鼠标事件的坐标,利用viewtomodel()。
|
void |
removeChangeListener(ChangeListener l)
删除一个监听器,跟踪插入位置的变化。
|
protected void |
repaint()
因为符号是画。
|
void |
setBlinkRate(int rate)
将插入符号闪烁速度。
|
void |
setDot(int dot)
将插入符号位置和按指定的位置,一个正向偏置。
|
void |
setDot(int dot, Position.Bias dotBias)
将插入符号位置和标记到指定位置,用指定的偏置。
|
void |
setMagicCaretPosition(Point p)
保存当前插入符号位置。
|
void |
setSelectionVisible(boolean vis)
更改选择可见性。
|
void |
setUpdatePolicy(int policy)
设置文档的更新符号运动政策。
|
void |
setVisible(boolean e)
设置符号的可见性,并重画符号。
|
String |
toString()
返回一个
String 代表这个
Rectangle 及其价值。
|
add, add, add, contains, contains, contains, contains, createIntersection, createUnion, getBounds, getBounds2D, getHeight, getLocation, getSize, getWidth, getX, getY, grow, inside, intersection, intersects, isEmpty, move, outcode, reshape, resize, setBounds, setBounds, setLocation, setLocation, setRect, setSize, setSize, translate, union
add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union
clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
finalize, getClass, notify, notifyAll, wait, wait, wait
contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects
public static final int UPDATE_WHEN_ON_EDT
setUpdatePolicy(int)
,
getUpdatePolicy()
,
Constant Field Values
public static final int NEVER_UPDATE
setUpdatePolicy(int)
,
getUpdatePolicy()
,
Constant Field Values
public static final int ALWAYS_UPDATE
setUpdatePolicy(int)
,
getUpdatePolicy()
,
Constant Field Values
protected EventListenerList listenerList
protected transient ChangeEvent changeEvent
public void setUpdatePolicy(int policy)
BACKSPACE
打印然后插入减小由于一个字符去除其绝对位置之前。有时它可能关闭插入位置更新,插入在文档中的位置相同的绝对位置无论任何文档更新有用。
下列更新策略是允许的:
NEVER_UPDATE
:插入在文档中的相同的绝对位置无论任何文档的更新,除非文件长度小于由于去除当前插入符号位置。在这种情况下,插入的位置调整到文档的末尾。插入符号并不试图通过滚动相关的视图中使用这一政策时保持可见。ALWAYS_UPDATE
:插入始终跟踪文件的变化。对于常规的变化,它增加了它的位置,如果插入发生之前或在其目前的位置,并减少位置,如果一个去除发生之前,其目前的位置。对于撤消/重做更新,它总是移动到发生更新的位置。插入符号也试图通过调用adjustVisibility
方法保持可见。UPDATE_WHEN_ON_EDT
:就像ALWAYS_UPDATE
如果文档更新在事件分发线程和喜欢NEVER_UPDATE
如果更新是在其他线程执行。默认的属性值UPDATE_WHEN_ON_EDT
。
policy
-以下值之一:
UPDATE_WHEN_ON_EDT
,
NEVER_UPDATE
,
ALWAYS_UPDATE
IllegalArgumentException
如果无效值传递
getUpdatePolicy()
,
adjustVisibility(java.awt.Rectangle)
,
UPDATE_WHEN_ON_EDT
,
NEVER_UPDATE
,
ALWAYS_UPDATE
public int getUpdatePolicy()
UPDATE_WHEN_ON_EDT
,
NEVER_UPDATE
,
ALWAYS_UPDATE
setUpdatePolicy(int)
,
UPDATE_WHEN_ON_EDT
,
NEVER_UPDATE
,
ALWAYS_UPDATE
protected final JTextComponent getComponent()
protected final void repaint()
这种方法是线程安全的,虽然大多数摇摆方法不是。更多信息请见Concurrency in Swing。
protected void damage(Rectangle r)
r
-插入当前位置
paint(java.awt.Graphics)
protected void adjustVisibility(Rectangle nloc)
nloc
-新位置滚动
protected Highlighter.HighlightPainter getSelectionPainter()
protected void positionCaret(MouseEvent e)
e
-鼠标事件
protected void moveCaret(MouseEvent e)
e
-鼠标事件
public void focusGained(FocusEvent e)
focusGained
接口
FocusListener
e
-焦点事件
FocusListener.focusGained(java.awt.event.FocusEvent)
public void focusLost(FocusEvent e)
focusLost
接口
FocusListener
e
-焦点事件
FocusListener.focusLost(java.awt.event.FocusEvent)
public void mouseClicked(MouseEvent e)
mouseClicked
接口
MouseListener
e
-鼠标事件
MouseListener.mouseClicked(java.awt.event.MouseEvent)
public void mousePressed(MouseEvent e)
mousePressed
接口
MouseListener
e
-鼠标事件
MouseListener.mousePressed(java.awt.event.MouseEvent)
public void mouseReleased(MouseEvent e)
mouseReleased
接口
MouseListener
e
-鼠标事件
MouseListener.mouseReleased(java.awt.event.MouseEvent)
public void mouseEntered(MouseEvent e)
mouseEntered
接口
MouseListener
e
-鼠标事件
MouseListener.mouseEntered(java.awt.event.MouseEvent)
public void mouseExited(MouseEvent e)
mouseExited
接口
MouseListener
e
-鼠标事件
MouseListener.mouseExited(java.awt.event.MouseEvent)
public void mouseDragged(MouseEvent e)
mouseDragged
接口
MouseMotionListener
e
-鼠标事件
MouseMotionListener.mouseDragged(java.awt.event.MouseEvent)
public void mouseMoved(MouseEvent e)
mouseMoved
接口
MouseMotionListener
e
-鼠标事件
MouseMotionListener.mouseMoved(java.awt.event.MouseEvent)
public void paint(Graphics g)
如果有多个文本方向的相关文件,指示符号偏差将呈现旗。这只会如果相关的文件是abstractdocument子类有多个投标水平在比迪元结构发生(即文本与它相关联的多个方向)。
paint
接口
Caret
g
-图形上下文
damage(java.awt.Rectangle)
public void install(JTextComponent c)
install
接口
Caret
c
-组件
Caret.install(javax.swing.text.JTextComponent)
public void deinstall(JTextComponent c)
deinstall
接口
Caret
c
-组件
Caret.deinstall(javax.swing.text.JTextComponent)
public void addChangeListener(ChangeListener l)
addChangeListener
接口
Caret
l
-听众
Caret.addChangeListener(javax.swing.event.ChangeListener)
public void removeChangeListener(ChangeListener l)
removeChangeListener
接口
Caret
l
-听众
Caret.removeChangeListener(javax.swing.event.ChangeListener)
public ChangeListener[] getChangeListeners()
ChangeListener
s或空数组如果没有改变听众正在注册
addChangeListener(javax.swing.event.ChangeListener)
,
removeChangeListener(javax.swing.event.ChangeListener)
protected void fireStateChanged()
EventListenerList
public <T extends EventListener> T[] getListeners(类<T> listenerType)
FooListener
s在此插入数组。
FooListener
s使用
addFooListener
方法注册。
您可以指定一个类的listenerType
字面的说法,如FooListener.class
。例如,你可以查询其变化的听众与下面的代码一DefaultCaret
c
:
changelistener [] CLS =(changelistener [ ])(c.getlisteners(changelistener。类));如果没有这样的听众的存在,此方法将返回空数组。
listenerType
-听众的类型要求;这个参数应该指定一个接口,从
java.util.EventListener
FooListener
s数组,或一个空数组如果没有这样的听众已添加
ClassCastException
-如果
listenerType
不指定一个类或接口实现
java.util.EventListener
getChangeListeners()
public void setSelectionVisible(boolean vis)
setSelectionVisible
接口
Caret
vis
-新的可见性
public boolean isSelectionVisible()
isSelectionVisible
接口
Caret
public boolean isActive()
此方法返回是否Caret
目前处于闪烁状态。它不提供的信息是否是目前眨眼或关闭。要确定如果插入目前画使用isVisible
方法。
false
true
活跃
isVisible()
public boolean isVisible()
isActive
指示是否插入符号是一个闪烁的状态,这样它
可以可见,和
isVisible
指示是否插入
是实际上可见。
子类,希望呈现一个不同的闪烁的插入符号应覆盖涂料和油漆只插入如果这个方法返回true。
isVisible
接口
Caret
Caret.isVisible()
,
isActive()
public void setVisible(boolean e)
isVisible
和
isActive
。有价值的
true
调用这个方法激活插入符号闪烁。设置为
false
变成完全关闭。要确定是否闪烁的是主动的,你应该打电话给
isActive
。实际上,
isActive
是一个适当的相应的“吸气”这一个方法。
isVisible
可以用来获取插入当前的可见性状态,意义是否正在画。这种状况将作为符号闪烁和关闭的变化。
这里是一个列表,调用此方法后都显示isActive
和isVisible
潜在的返回值:
setVisible(true)
:
setVisible(false)
:
setVisible
接口
Caret
e
-能见度说明符
isActive()
,
Caret.setVisible(boolean)
public void setBlinkRate(int rate)
setBlinkRate
接口
Caret
rate
在毫秒的速率,0停止闪烁
Caret.setBlinkRate(int)
public int getBlinkRate()
getBlinkRate
接口
Caret
Caret.getBlinkRate()
public int getDot()
getDot
接口
Caret
Caret.getDot()
public int getMark()
getMark
接口
Caret
Caret.getMark()
public void setDot(int dot)
setDot
接口
Caret
dot
--位置> = 0
setDot(int, Position.Bias)
,
Caret.setDot(int)
public void moveDot(int dot)
moveDot
接口
Caret
dot
--位置> = 0
moveDot(int, javax.swing.text.Position.Bias)
,
Caret.moveDot(int)
public void moveDot(int dot, Position.Bias dotBias)
dot
--位置> = 0
dotBias
-这个位置的偏差,不
null
IllegalArgumentException
如果偏差是
null
Caret.moveDot(int)
public void setDot(int dot, Position.Bias dotBias)
dot
--位置> = 0
dotBias
-这个位置的偏差,不
null
IllegalArgumentException
如果偏差是
null
Caret.setDot(int)
public Position.Bias getDotBias()
public Position.Bias getMarkBias()
public void setMagicCaretPosition(Point p)
setMagicCaretPosition
接口
Caret
p
-位置
getMagicCaretPosition()
public Point getMagicCaretPosition()
getMagicCaretPosition
接口
Caret
Caret.setMagicCaretPosition(java.awt.Point)
public boolean equals(Object obj)
equals
方法重写,继承类
Rectangle
obj
-对象与该字体的比较
true
如果对象是平等的;
false
否则
Object.hashCode()
,
HashMap
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.