|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.swing.plaf.ComponentUI javax.swing.plaf.TextUI javax.swing.plaf.basic.BasicTextUI
public abstract class BasicTextUI
此類別是文本元件外觀的基礎。它提供基本的編輯器視圖和控制器服務,在為 JTextComponent
的擴展類別創建外觀時非常有用。
大多數狀態作為綁定 (bound) 屬性保存在關聯的 JTextComponent
中,UI 為各種屬性安裝預設值。此預設值將為所有屬性安裝某些內容。但是,通常 LAF 實作所做的不止如此。LAF 一般至少會安裝鍵綁定。
如果與 JTextComponent 關聯的 Document
是 AbstractDocument
的子類別,則此類別還將提供某些共時支持。在任一更改模型的執行緒與 Swing 事件執行緒(希望用來呈現、進行模型/視圖坐標轉換等)之間,對 View(或 View 層次結構)的存取都是序列化的。對根視圖的任何存取首先應該獲取一個 AbstractDocument 上的讀鎖 (read-lock),並在 finally 程式碼塊中釋放該鎖。
要定義的一個重要方法是 getPropertyPrefix()
方法,該方法作為從 UIManager 獲取預設值的鍵的基礎。字元串應該反映 TextUI(例如,TextField、TextArea 等)的型別,並且不帶名稱的特定 LAF 部分(例如,Metal、Motif 等)。
要建構模型的視圖,可以使用以下策略之一。
create(javax.swing.text.Element)
方法。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder
。
巢狀類別摘要 | |
---|---|
static class |
BasicTextUI.BasicCaret
|
static class |
BasicTextUI.BasicHighlighter
|
建構子摘要 | |
---|---|
BasicTextUI()
創建新的 UI。 |
方法摘要 | |
---|---|
View |
create(Element elem)
創建元素的視圖。 |
View |
create(Element elem,
int p0,
int p1)
創建元素的視圖。 |
protected Caret |
createCaret()
創建用於插入符的物件。 |
protected Highlighter |
createHighlighter()
創建用於添加高亮顯示的物件。 |
protected Keymap |
createKeymap()
創建用於文本元件的 keymap,並在其中安裝必需的綁定。 |
void |
damageRange(JTextComponent tc,
int p0,
int p1)
促使重新繪製負責模型給定部分的那部分視圖。 |
void |
damageRange(JTextComponent t,
int p0,
int p1,
Position.Bias p0Bias,
Position.Bias p1Bias)
促使重新繪製負責模型給定部分的那部分視圖。 |
protected JTextComponent |
getComponent()
獲取與此 UI 實作關聯的文本元件。 |
EditorKit |
getEditorKit(JTextComponent tc)
獲取 UI 的 EditorKit。 |
protected String |
getKeymapName()
獲取預設情況下為此 UI 安裝或用於此 UI 的 keymap 的名稱。 |
Dimension |
getMaximumSize(JComponent c)
獲取編輯器元件的最大大小。 |
Dimension |
getMinimumSize(JComponent c)
獲取編輯器元件的最小大小。 |
int |
getNextVisualPositionFrom(JTextComponent t,
int pos,
Position.Bias b,
int direction,
Position.Bias[] biasRet)
提供確定下一個可以放置一個插入符的可見模型位置的方法。 |
Dimension |
getPreferredSize(JComponent c)
獲取編輯器元件的首選大小。 |
protected abstract String |
getPropertyPrefix()
獲取通過 UIManager 尋找屬性時用作鍵的名稱。 |
View |
getRootView(JTextComponent tc)
獲取分派了相關文本元件(即層次結構的根)的 View,可通過遍歷該視圖確定模型在空間中的表示形式。 |
String |
getToolTipText(JTextComponent t,
Point pt)
返回在傳入位置上用作工具提示的字元串。 |
protected Rectangle |
getVisibleEditorRect()
獲取給出根 View 的分派。 |
protected void |
installDefaults()
初始化元件屬性,例如,字體、前景、背景、插入符顏色、選擇顏色、所選文本顏色、禁用文本顏色,以及邊框顏色。 |
protected void |
installKeyboardActions()
|
protected void |
installListeners()
安裝 UI 的偵聽器。 |
void |
installUI(JComponent c)
安裝元件的 UI。 |
protected void |
modelChanged()
標誌模型更改。 |
Rectangle |
modelToView(JTextComponent tc,
int pos)
將模型中的給定位置轉換成視圖坐標系統中的某一個位置。 |
Rectangle |
modelToView(JTextComponent tc,
int pos,
Position.Bias bias)
將模型中的給定位置轉換成視圖坐標系統中的某一個位置。 |
void |
paint(Graphics g,
JComponent c)
繪製介面。 |
protected void |
paintBackground(Graphics g)
繪製視圖的背景。 |
protected void |
paintSafely(Graphics g)
安全地繪製介面,保證模型不會根據此執行緒的視圖發生更改。 |
protected void |
propertyChange(PropertyChangeEvent evt)
當關聯的 JTextComponent 上有一個綁定屬性更改時,此方法被調用。 |
protected void |
setView(View v)
設置視圖層次結構的當前根並調用 invalidate()。 |
protected void |
uninstallDefaults()
將尚未顯式覆寫的元件屬性設置為 null。 |
protected void |
uninstallKeyboardActions()
|
protected void |
uninstallListeners()
卸載 UI 的偵聽器。 |
void |
uninstallUI(JComponent c)
卸載元件的 UI。 |
void |
update(Graphics g,
JComponent c)
父級類別以無法控制的方式繪製背景(即有人可能希望將圖像平鋪在背景中)。 |
int |
viewToModel(JTextComponent tc,
Point pt)
將視圖坐標系統中的給定位置轉換成模型中最有代表性的位置。 |
int |
viewToModel(JTextComponent tc,
Point pt,
Position.Bias[] biasReturn)
將視圖坐標系統中的給定位置轉換成模型中最有代表性的位置。 |
從類別 javax.swing.plaf.ComponentUI 繼承的方法 |
---|
contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public BasicTextUI()
方法詳細資訊 |
---|
protected Caret createCaret()
protected Highlighter createHighlighter()
protected String getKeymapName()
protected Keymap createKeymap()
用於創建 keymap 的綁定集從 UIManager 獲取,方法是使用通過組合 getPropertyPrefix()
方法和字元串 .keyBindings
而形成的鍵。期望的型別為 JTextComponent.KeyBinding[]
。
getKeymapName()
,
JTextComponent
protected void propertyChange(PropertyChangeEvent evt)
evt
- 屬性更改事件protected abstract String getPropertyPrefix()
protected void installDefaults()
uninstallDefaults()
,
installUI(javax.swing.JComponent)
protected void uninstallDefaults()
installDefaults()
,
uninstallUI(javax.swing.JComponent)
protected void installListeners()
protected void uninstallListeners()
protected void installKeyboardActions()
protected void uninstallKeyboardActions()
protected void paintBackground(Graphics g)
g
- 圖形上下文protected final JTextComponent getComponent()
protected void modelChanged()
protected final void setView(View v)
v
- 根視圖protected void paintSafely(Graphics g)
g
- 圖形上下文public void installUI(JComponent c)
ComponentUI
中的 installUI
c
- 編輯器元件ComponentUI.installUI(javax.swing.JComponent)
public void uninstallUI(JComponent c)
ComponentUI
中的 uninstallUI
c
- 編輯器元件ComponentUI.uninstallUI(javax.swing.JComponent)
public void update(Graphics g, JComponent c)
註: 父級類別在其背景呈現中也不是執行緒安全的,儘管在預設呈現中不存在這樣的問題。
ComponentUI
中的 update
g
- 將在其中進行繪製的 Graphics
上下文c
- 將繪製的元件;此參數常被忽略,但如果 UI 物件是無狀態的並由多個元件共享,則可以使用該參數ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent)
,
JComponent.paintComponent(java.awt.Graphics)
public final void paint(Graphics g, JComponent c)
ComponentUI
中的 paint
g
- 圖形上下文c
- 編輯器元件ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
public Dimension getPreferredSize(JComponent c)
ComponentUI
中的 getPreferredSize
c
- 編輯器元件
JComponent.getPreferredSize()
,
LayoutManager.preferredLayoutSize(java.awt.Container)
public Dimension getMinimumSize(JComponent c)
ComponentUI
中的 getMinimumSize
c
- 編輯器元件
JComponent.getMinimumSize()
,
LayoutManager.minimumLayoutSize(java.awt.Container)
,
ComponentUI.getPreferredSize(javax.swing.JComponent)
public Dimension getMaximumSize(JComponent c)
ComponentUI
中的 getMaximumSize
c
- 編輯器元件
JComponent.getMaximumSize()
,
LayoutManager2.maximumLayoutSize(java.awt.Container)
protected Rectangle getVisibleEditorRect()
public Rectangle modelToView(JTextComponent tc, int pos) throws BadLocationException
TextUI
中的 modelToView
tc
- 文本元件,為其安裝此 UIpos
- 要轉換的模型中的本地位置,該值 >= 0
BadLocationException
- 如果給定位置不表示關聯文檔中的有效位置TextUI.modelToView(javax.swing.text.JTextComponent, int)
public Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException
TextUI
中的 modelToView
tc
- 文本元件,為其安裝此 UIpos
- 要轉換的模型中的本地位置,該值 >= 0
BadLocationException
- 如果給定位置不表示關聯文檔中的有效位置TextUI.modelToView(javax.swing.text.JTextComponent, int)
public int viewToModel(JTextComponent tc, Point pt)
TextUI
中的 viewToModel
tc
- 文本元件,為其安裝此 UIpt
- 視圖中要轉換的位置。此位置應該與鼠標事件在同一坐標系統中。
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
public int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
TextUI
中的 viewToModel
tc
- 為其安裝此 UI 的文本元件pt
- 視圖中要轉換的位置。此位置應該與鼠標事件在同一坐標系統中。biasReturn
- 由此方法填充,以指示給定點是更接近於模型中的前一個字元,還是更接近於模型中的下一個字元
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
public int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) throws BadLocationException
TextUI
中的 getNextVisualPositionFrom
t
- 為其安裝此 UI 的文本元件pos
- 要轉換的位置,該位置 >= 0b
- 位置的偏差direction
- 以當前位置開始的方向,可以將它們設想為通常出現在鍵盤上的箭頭鍵。該參數可以是 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH 或 SwingConstants.SOUTHbiasRet
- 套件含返回位置偏差的陣列
BadLocationException
public void damageRange(JTextComponent tc, int p0, int p1)
TextUI
中的 damageRange
tc
- 文本元件,為其安裝此 UIp0
- 範圍的開頭,該值 >= 0p1
- 範圍的結尾,該值 >= p0TextUI.damageRange(javax.swing.text.JTextComponent, int, int)
public void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
TextUI
中的 damageRange
p0
- 範圍的起始位置,該值 >= 0p1
- 範圍的結束位置,該值 >= p0public EditorKit getEditorKit(JTextComponent tc)
TextUI
中的 getEditorKit
tc
- 文本元件,為其安裝此 UI
TextUI.getEditorKit(javax.swing.text.JTextComponent)
public View getRootView(JTextComponent tc)
註:可以從根視圖遍歷 View 層次結構,其他操作也可以如此。以此方式完成的操作不會像通過 TextUI 的簡單方法調用那樣受到保護。因此,存在共時操作時必須按照調用此方法的邏輯安排適當的操作!
TextUI
中的 getRootView
tc
- 文本元件,為其安裝此 UI
TextUI.getRootView(javax.swing.text.JTextComponent)
public String getToolTipText(JTextComponent t, Point pt)
TextUI
中的 getToolTipText
JTextComponent.getToolTipText(java.awt.event.MouseEvent)
,
View.getToolTipText(float, float, java.awt.Shape)
public View create(Element elem)
ViewFactory
中的 create
elem
- 元素
View
public View create(Element elem, int p0, int p1)
elem
- 元素p0
- 開始偏移量,該值 >= 0p1
- 結束偏移量,該值 >= p0
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。