|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JViewport
public class JViewport
用於查看底層資訊的“視口”或“觀察孔”。在滾動時,移動部分稱為視口。這好像通過照相機的取景器進行查看。將取景器向上移動會將圖片頂部的內部移入視野,而底部的內容將消失。
預設情況下,JViewport
是不透明的。要進行更改,請使用 setOpaque
方法。
註:我們已實作了更快的滾動演算法,不需要引入快取記憶體。該演算法的工作方式如下:
JComponents
,如果不是,則停止,然後重繪整個視口。
Window
的圖形,並在滾動區域上執行 copyArea
。
copyArea
的開銷。與非後備存儲情況相比,此方法將大大減少繪製的區域。
當視口被另一視窗遮掩或者部分在螢幕外時,此方法比後備存儲方法更慢。當另一視窗遮掩該視口時,copyArea 將複製垃圾,並且系統將產生一個繪製事件,通知我們繪製新露出的區域。處理這一情況的惟一方法是重繪整個視口,這可能比後備存儲情形的速度要慢。在多數應用程序中,在視口被另一視窗遮掩或在螢幕外時,使用者很少滾動它,因此,在被遮掩時,通常值得使用這一優化來提高性能。
警告:Swing 不是執行緒安全的。有關更多資訊,請參閱 Swing's Threading Policy。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder
。
JScrollPane
巢狀類別摘要 | |
---|---|
protected class |
JViewport.AccessibleJViewport
此類別實作對 JViewport 類別的可存取性支持。 |
protected class |
JViewport.ViewListener
視圖的偵聽器。 |
從類別 javax.swing.JComponent 繼承的巢狀類別/介面 |
---|
JComponent.AccessibleJComponent |
從類別 java.awt.Container 繼承的巢狀類別/介面 |
---|
Container.AccessibleAWTContainer |
從類別 java.awt.Component 繼承的巢狀類別/介面 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
欄位摘要 | |
---|---|
protected boolean |
backingStore
已過時。 從 Java 2 平臺 v1.3 開始 |
static int |
BACKINGSTORE_SCROLL_MODE
將視口內容拉入螢幕外圖像。 |
protected Image |
backingStoreImage
用於後備存儲的視圖圖像。 |
static int |
BLIT_SCROLL_MODE
使用 graphics.copyArea 來實作滾動。 |
protected boolean |
isViewSizeSet
在確定視口的維數後為 true。 |
protected Point |
lastPaintPosition
我們繪製的最後一個 viewPosition ,因此我們知道有多少有效的後備存儲圖像。 |
protected boolean |
scrollUnderway
scrollUnderway 標誌用於 JList 之類別的元件。 |
static int |
SIMPLE_SCROLL_MODE
此網要使用非常簡單的方法,在 scrollpane 每次滾動時重繪它的整個內容。 |
從類別 javax.swing.JComponent 繼承的欄位 |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
從類別 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 |
建構子摘要 | |
---|---|
JViewport()
創建一個 JViewport 。 |
方法摘要 | |
---|---|
void |
addChangeListener(ChangeListener l)
將一個 ChangeListener 添加到每次在視圖的大小、位置或視口的擴展大小更改時都會得到通知的列表。 |
protected void |
addImpl(Component child,
Object constraints,
int index)
設置 JViewport 的輕量子物件,可以為 null 。 |
protected boolean |
computeBlit(int dx,
int dy,
Point blitFrom,
Point blitTo,
Dimension blitSize,
Rectangle blitPaint)
計算 blit 的參數,其中後備存儲圖像當前在左上角包含 oldLoc ,並且我們滾動到 newLoc 。 |
protected LayoutManager |
createLayoutManager()
子類別可以覆寫此方法以在該建構子中安裝一個不同佈局的管理器(或者為 null )。 |
protected JViewport.ViewListener |
createViewListener()
為該視圖創建偵聽器。 |
protected void |
firePropertyChange(String propertyName,
Object oldValue,
Object newValue)
通知偵聽器發生的屬性更改。 |
protected void |
fireStateChanged()
在視圖的大小、位置或視口的擴展大小更改時通知所有 ChangeListeners 。 |
AccessibleContext |
getAccessibleContext()
獲取與此 JViewport 關聯的 AccessibleContext。 |
ChangeListener[] |
getChangeListeners()
返回使用 addChangeListener() 添加到此 JViewport 的所有 ChangeListener 的陣列。 |
Dimension |
getExtentSize()
返回視圖坐標中視圖的可見部分的大小。 |
Insets |
getInsets()
返回 inset(邊框)維數 (0,0,0,0),因為在 JViewport 上不支持邊框。 |
Insets |
getInsets(Insets insets)
返回包含此 JViewport 的 inset 值的 inset 物件。 |
int |
getScrollMode()
返回當前的滾動網要。 |
ViewportUI |
getUI()
返回呈現此元件的 L&F 物件。 |
String |
getUIClassID()
返回指定呈現此元件的 L&F 類別名稱的字元串。 |
Component |
getView()
返回 JViewport 的一個子物件或 null 。 |
Point |
getViewPosition()
返回顯示在視口左上角的視圖坐標,如果不存在視圖,則返回(0,0)。 |
Rectangle |
getViewRect()
返回一個矩形,其原位置在 getViewPosition ,大小為 getExtentSize 。 |
Dimension |
getViewSize()
如果未顯式設置視圖的大小,則返回首選大小,否則返回該視圖的當前大小。 |
boolean |
isBackingStoreEnabled()
已過時。 從 Java 2 平臺 1.3 版開始,由 getScrollMode() 取代。 |
boolean |
isOptimizedDrawingEnabled()
JViewport 覆寫此方法(在 JComponent 中返回 false)的預設實作。 |
void |
paint(Graphics g)
通過後備存儲繪製圖像,或者使用後備存儲“位圖傳送”剩餘圖像來僅繪製最新暴露的部分,這具體取決於是否啟用 backingStore 。 |
protected String |
paramString()
返回此 JViewport 的字元串表示形式。 |
void |
remove(Component child)
移除 Viewport 的一個輕量子物件。 |
void |
removeChangeListener(ChangeListener l)
從每次在視圖的大小、位置或視口的擴展大小更改時都會得到通知的列表中移除 ChangeListener 。 |
void |
repaint(long tm,
int x,
int y,
int w,
int h)
始終在父坐標系統中重繪,以確保 RepaintManager 僅執行一種繪製方法。 |
void |
reshape(int x,
int y,
int w,
int h)
設置此視口的邊界。 |
void |
scrollRectToVisible(Rectangle contentRect)
滾動該視圖,使該視圖中的 Rectangle 變得可見。 |
void |
setBackingStoreEnabled(boolean enabled)
已過時。 從 Java 2 平臺 1.3 版開始,由 setScrollMode() 取代。 |
void |
setBorder(Border border)
視口通過常規父/子剪貼(一般該視圖向滾動的相反方向移動)“滾動”其子視口(稱為“視圖”)。 |
void |
setExtentSize(Dimension newExtent)
使用視圖坐標設置該視圖可見部分的大小。 |
void |
setScrollMode(int mode)
用於控制滾動視口內容的方法。 |
void |
setUI(ViewportUI ui)
設置呈現此元件的 L&F 物件。 |
void |
setView(Component view)
設置 JViewport 的一個輕量子物件 (view ),可以為 null 。 |
void |
setViewPosition(Point p)
設置顯示在視口左上角的視圖坐標,如果不存在視圖,則不執行任何操作。 |
void |
setViewSize(Dimension newSize)
設置視圖的大小。 |
Dimension |
toViewCoordinates(Dimension size)
將一個大小的像素坐標轉換為視圖坐標。 |
Point |
toViewCoordinates(Point p)
將一個點的像素坐標轉換為視圖坐標。 |
void |
updateUI()
將 UI 屬性重置為當前外觀的值。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
欄位詳細資訊 |
---|
protected boolean isViewSizeSet
protected Point lastPaintPosition
viewPosition
,因此我們知道有多少有效的後備存儲圖像。
@Deprecated protected boolean backingStore
false
。
setScrollMode(int)
protected transient Image backingStoreImage
protected boolean scrollUnderway
scrollUnderway
標誌用於 JList
之類別的元件。當在 JList
上按下向下箭頭且所選單元格是列表中的最後一個單元格時,scrollpane
將自動滾動。這裡,以前選中的單元格需要進行重繪,因此我們需要一個標誌讓該視口僅在存在對 setViewPosition(Point)
的顯式調用時執行優化的繪製。當通過其他途徑調用 setBounds
時,該標誌關閉並且該視圖按常規方法重繪。另一種方法是從 JViewport
類別中移除此標誌,並讓 JList
通過使用 setBackingStoreEnabled
管理此情形。預設值為 false
。
public static final int BLIT_SCROLL_MODE
graphics.copyArea
來實作滾動。對多數應用程序而言,這是最快的方法。
setScrollMode(int)
,
常數欄位值public static final int BACKINGSTORE_SCROLL_MODE
JTable
的預設網要。在某些情況下,此網要優於“位圖傳送網要”,但它需要大量的額外記憶體。
setScrollMode(int)
,
常數欄位值public static final int SIMPLE_SCROLL_MODE
setScrollMode(int)
,
常數欄位值建構子詳細資訊 |
---|
public JViewport()
JViewport
。
方法詳細資訊 |
---|
public ViewportUI getUI()
ViewportUI
物件public void setUI(ViewportUI ui)
ui
- ViewportUI
L&F 物件UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
JComponent
中的 updateUI
JComponent.updateUI()
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
protected void addImpl(Component child, Object constraints, int index)
JViewport
的輕量子物件,可以為 null
。(由於只存在一個佔用整個視口的子物件,因此忽略 constraints
和 index
參數。)
Container
中的 addImpl
child
- 視口的輕量 child
constraints
- 要考慮的 constraint
index
- 索引setView(java.awt.Component)
public void remove(Component child)
Viewport
的一個輕量子物件。
Container
中的 remove
child
- 要移除的元件setView(java.awt.Component)
public void scrollRectToVisible(Rectangle contentRect)
Rectangle
變得可見。
如果視圖當前無效,則此操作將嘗試在滾動前驗證該視圖 - isValid
返回 false。為避免在創建包含層次結構時驗證時間過長,如果祖先之一沒有同位體,或者不存在有效的根祖先,或者祖先之一不是 Window
或 Applet
,則不進行驗證。
注意,此方法不會滾動到有效視口之外;例如,如果 contentRect
大於視口,滾動操作將限制在視口的邊界之內。
JComponent
中的 scrollRectToVisible
contentRect
- 要顯示的 Rectangle
JComponent.isValidateRoot()
,
Component.isValid()
,
Component.getPeer()
public final void setBorder(Border border)
null
邊框或非零 inset,以防止此元件的幾何結構複雜得無法禁止創建子類別。要創建帶邊框的 JViewport
,請將其添加到具有邊框的 JPanel
。
註:如果 border
為非 null
,此方法將拋出一個異常,原因是在 JViewPort
上不支持邊框。
JComponent
中的 setBorder
border
- 要設置的 Border
IllegalArgumentException
- 未實作此方法Border
,
CompoundBorder
public final Insets getInsets()
JViewport
上不支持邊框。
JComponent
中的 getInsets
Rectange
setBorder(javax.swing.border.Border)
public final Insets getInsets(Insets insets)
JViewport
的 inset 值的 inset
物件。重新初始化傳入的 inset
物件,此物件中所有現有值都將被覆寫。
JComponent
中的 getInsets
insets
- 可以重用的 inset
物件
getInsets()
public boolean isOptimizedDrawingEnabled()
JViewport
覆寫此方法(在 JComponent
中返回 false)的預設實作。這確保了繪製機制將調用 Viewport
的 paint
實作,而不是直接通知 JViewport
的子物件。
JComponent
中的 isOptimizedDrawingEnabled
public void paint(Graphics g)
backingStore
。
術語“位圖傳送”是 PDP-10 BLT (BLock Transfer) 指令的 pronounced 版,該指令複製位塊。(在您感到好奇時。)
JComponent
中的 paint
g
- 要在其中進行繪製的 Graphics
上下文JComponent.paintComponent(java.awt.Graphics)
,
JComponent.paintBorder(java.awt.Graphics)
,
JComponent.paintChildren(java.awt.Graphics)
,
JComponent.getComponentGraphics(java.awt.Graphics)
,
JComponent.repaint(long, int, int, int, int)
public void reshape(int x, int y, int w, int h)
StateChanged
事件。
JComponent
中的 reshape
x
- 原視口的左邊緣y
- 原視口的上邊緣w
- 以像素為單位的寬度h
- 以像素為單位的高度JComponent.reshape(int, int, int, int)
public void setScrollMode(int mode)
mode
- 下列值之一:
BLIT_SCROLL_MODE
,
BACKINGSTORE_SCROLL_MODE
,
SIMPLE_SCROLL_MODE
public int getScrollMode()
scrollMode
屬性setScrollMode(int)
@Deprecated public boolean isBackingStoreEnabled()
getScrollMode()
取代。
true
。
scrollMode
為 BACKINGSTORE_SCROLL_MODE
,則返回 true
@Deprecated public void setBackingStoreEnabled(boolean enabled)
setScrollMode()
取代。
viewPosition
的較小一維更改的成本。我們使用 Graphics.copyArea
實作某些滾動,而不是重繪整個視口。
enabled
- 如果為 true,則維持一個螢幕外後備存儲public Component getView()
JViewport
的一個子物件或 null
。
null
setView(java.awt.Component)
public void setView(Component view)
JViewport
的一個輕量子物件 (view
),可以為 null
。
view
- 該視口的新輕量子物件getView()
public Dimension getViewSize()
Dimension
物件public void setViewSize(Dimension newSize)
newSize
- 指定視圖新大小的 Dimension
物件public Point getViewPosition()
Point
物件public void setViewPosition(Point p)
p
- 給出左上角坐標的 Point
物件public Rectangle getViewRect()
getViewPosition
,大小為 getExtentSize
。這是視圖在視圖坐標中的可見部分。
Rectangle
。protected boolean computeBlit(int dx, int dy, Point blitFrom, Point blitTo, Dimension blitSize, Rectangle blitPaint)
oldLoc
,並且我們滾動到 newLoc
。已修改該參數以返回 blit 所需的值。
dx
- 水平 deltady
- 垂直 deltablitFrom
- 我們從中傳送的 Point
blitTo
- 我們傳送的 Point
blitSize
- 要傳送的區域的 Dimension
blitPaint
- 要傳送的區域
public Dimension getExtentSize()
Dimension
物件public Dimension toViewCoordinates(Dimension size)
size
- 使用像素坐標的 Dimension
物件
Dimension
物件public Point toViewCoordinates(Point p)
p
- 使用像素坐標的 Point
物件
Point
物件public void setExtentSize(Dimension newExtent)
newExtent
- 指定視圖大小的 Dimension
物件protected JViewport.ViewListener createViewListener()
ViewListener
protected LayoutManager createLayoutManager()
null
)。返回要在 JViewport
上安裝的 LayoutManager
。
LayoutManager
public void addChangeListener(ChangeListener l)
ChangeListener
添加到每次在視圖的大小、位置或視口的擴展大小更改時都會得到通知的列表。
l
- 要添加的 ChangeListener
removeChangeListener(javax.swing.event.ChangeListener)
,
setViewPosition(java.awt.Point)
,
setViewSize(java.awt.Dimension)
,
setExtentSize(java.awt.Dimension)
public void removeChangeListener(ChangeListener l)
ChangeListener
。
l
- 要移除的 ChangeListener
addChangeListener(javax.swing.event.ChangeListener)
public ChangeListener[] getChangeListeners()
ChangeListener
的陣列。
ChangeListener
,如果未添加偵聽器,則返回一個空陣列protected void fireStateChanged()
ChangeListeners
。
addChangeListener(javax.swing.event.ChangeListener)
,
removeChangeListener(javax.swing.event.ChangeListener)
,
EventListenerList
public void repaint(long tm, int x, int y, int w, int h)
RepaintManager
僅執行一種繪製方法。
JComponent
中的 repaint
tm
- 更新前等待的最長時間(以毫秒為單位)x
- x
坐標(像素從左端向上)y
- y
坐標(像素從頂部向下)w
- 寬度h
- 高度Component.update(java.awt.Graphics)
protected String paramString()
JViewport
的字元串表示形式。此方法僅在進行除錯的時候使用,對於各個實作,所返回字元串的內容和格式可能有所不同。返回的字元串可能為空,但不可能為 null
。
JComponent
中的 paramString
JViewport
的字元串表示形式protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
windowBlit
屬性。(putClientProperty
屬性為最後屬性)。
Component
中的 firePropertyChange
propertyName
- 套件含屬性名的字元串oldValue
- 屬性的舊值newValue
- 屬性的新值public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。