|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JScrollPane
public class JScrollPane
提供輕量級元件的 scrollable 視圖。JScrollPane
管理視口、可選的垂直和水平滾動條以及可選的行和列標題視口。有關 JScrollPane
的導向任務的文檔,請參閱 The Java Tutorial 中的 How to Use Scroll Panes 一節。注意,JScrollPane
不支持重量級元件。
|
JViewport
為資料源提供一個視窗或“視口”,例如,一個文本檔案。該資料源為由 JViewport
視圖顯示的“scrollable 客戶端”(即資料模型)。JScrollPane
基本上由 JScrollBar
、一個 JViewport
以及它們之間的連線組成,如右圖所示。
除了滾動條和視口之外,JScrollPane
也可以有一個列標題和一個行標題。這二者都是 JViewport
物件,可用 setRowHeaderView
和 setColumnHeaderView
指定。列標題視口自動左右滾動,追蹤主視口的左右滾動。(但是它不會垂直滾動。)行標題的滾動方式與此類似。
在兩個滾動條的交匯處、行標題與列標題的交匯處,或者滾動條與其中一個標題的交匯處,兩個元件在很接近角的地方停止,留下一個預設情況下為空的矩形空間。四個角都有可能存在這些空間。在上圖中,右上角存在該空間,由標籤「角元件」標識。
可使用 setCorner
方法替換許多的這些空白空間,以便將元件添加到一個特定角。(註:相同的元件不能添加到多個角。)如果想要為滾動窗格增加一些額外的裝飾或功能,那麼此方法很有用。每個角元件的大小都完全由標題和/或包圍它的滾動條的大小確定。
只有角元件存在於其中的角中有空白空間時該角元件才是可見的。例如,設想一個設置在滾動窗格(帶有列標題)右上角的元件。如果滾動窗格的垂直滾動條不存在(可能因為視圖元件尚未大到需要它的地步),那麼該角元件將不會顯示(因為標題和垂直滾動條的交匯點所創建的角中沒有空白空間)。要強制使滾動條始終顯示,可使用 setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS)
確保該角元件的空間始終存在。
要圍繞主視口添加一個邊界,可使用 setViewportBorder
。(當然,也可以使用 setBorder
圍繞整個滾動窗格添加一個邊界。)
應該執行的一個常見操作是設置背景顏色,此顏色可在主視口小於視口或透明時使用。使用 scrollPane.getViewport().setBackground()
設置視口的背景色可實作此目的。設置視口而不是滾動窗格的顏色的原因是,預設情況下,JViewport
為不透明,還有一些其他屬性,這意味著它將用其背景色完全填充背景。因此當 JScrollPane
繪製其背景時,視口通常將在它上面繪製。
預設情況下,JScrollPane
使用 ScrollPaneLayout
處理其子元件的佈局。ScrollPaneLayout
使用以下兩個方法之一確定視口視圖的大小:
Scrollable
,將使用 getPreferredScrollableViewportSize
、getScrollableTracksViewportWidth
和 getScrollableTracksViewportHeight
的組合,否則使用
getPreferredSize
。
警告:Swing 不是執行緒安全的。有關更多資訊,請參閱 Swing's Threading Policy。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder
。
JScrollBar
,
JViewport
,
ScrollPaneLayout
,
Scrollable
,
Component.getPreferredSize()
,
setViewportView(java.awt.Component)
,
setRowHeaderView(java.awt.Component)
,
setColumnHeaderView(java.awt.Component)
,
setCorner(java.lang.String, java.awt.Component)
,
setViewportBorder(javax.swing.border.Border)
巢狀類別摘要 | |
---|---|
protected class |
JScrollPane.AccessibleJScrollPane
此類別實作 JScrollPane 類別的可存取性支持。 |
protected class |
JScrollPane.ScrollBar
預設情況下, JScrollPane 創建的滾動條為此類別的實例。 |
從類別 javax.swing.JComponent 繼承的巢狀類別/介面 |
---|
JComponent.AccessibleJComponent |
從類別 java.awt.Container 繼承的巢狀類別/介面 |
---|
Container.AccessibleAWTContainer |
從類別 java.awt.Component 繼承的巢狀類別/介面 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
欄位摘要 | |
---|---|
protected JViewport |
columnHeader
列標題子級。 |
protected JScrollBar |
horizontalScrollBar
滾動窗格的水平滾動條子級。 |
protected int |
horizontalScrollBarPolicy
用於水平滾動條的顯示策略。 |
protected Component |
lowerLeft
在左下角顯示的元件。 |
protected Component |
lowerRight
在右下角顯示的元件。 |
protected JViewport |
rowHeader
行標題子級。 |
protected Component |
upperLeft
在左上角顯示的元件。 |
protected Component |
upperRight
在右上角顯示的元件。 |
protected JScrollBar |
verticalScrollBar
滾動窗格的垂直滾動條子級。 |
protected int |
verticalScrollBarPolicy
用於垂直滾動條的顯示策略。 |
protected JViewport |
viewport
滾動窗格的視口子級。 |
從類別 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 |
建構子摘要 | |
---|---|
JScrollPane()
創建一個空的(無視口的視圖) JScrollPane ,需要時水平和垂直滾動條都可顯示。 |
|
JScrollPane(Component view)
創建一個顯示指定元件內容的 JScrollPane ,只要元件的內容超過視圖大小就會顯示水平和垂直滾動條。 |
|
JScrollPane(Component view,
int vsbPolicy,
int hsbPolicy)
創建一個 JScrollPane ,它將視圖元件顯示在一個視口中,視圖位置可使用一對滾動條控制。 |
|
JScrollPane(int vsbPolicy,
int hsbPolicy)
創建一個具有指定滾動條策略的空(無視口的視圖) JScrollPane 。 |
方法摘要 | |
---|---|
JScrollBar |
createHorizontalScrollBar()
預設返回 JScrollPane.ScrollBar 。 |
JScrollBar |
createVerticalScrollBar()
預設返回 JScrollPane.ScrollBar 。 |
protected JViewport |
createViewport()
預設返回新的 JViewport 。 |
AccessibleContext |
getAccessibleContext()
獲取與此 JScrollPane 相關聯的 AccessibleContext。 |
JViewport |
getColumnHeader()
返回列標題。 |
Component |
getCorner(String key)
返回位於指定角的元件。 |
JScrollBar |
getHorizontalScrollBar()
返回控制視口的水平視圖位置的水平滾動條。 |
int |
getHorizontalScrollBarPolicy()
返回水平滾動條策略值。 |
JViewport |
getRowHeader()
返回行標題。 |
ScrollPaneUI |
getUI()
返回呈現此元件的外觀 (L&F) 物件。 |
String |
getUIClassID()
返回用於建構呈現此元件時所用 L&F 類別的名稱的後綴。 |
JScrollBar |
getVerticalScrollBar()
返回控制視口垂直視圖位置的垂直滾動條。 |
int |
getVerticalScrollBarPolicy()
返回垂直滾動條策略值。 |
JViewport |
getViewport()
返回當前的 JViewport 。 |
Border |
getViewportBorder()
返回圍繞該視口的 Border 物件。 |
Rectangle |
getViewportBorderBounds()
返回視口邊界的範圍。 |
boolean |
isValidateRoot()
覆寫以返回 true,這樣任何在此 JScrollPane 的任何後代上對 revalidate 的調用將使從此 JScrollPane 開始的整個階層樹接受驗證。 |
boolean |
isWheelScrollingEnabled()
指示是否進行滾動以回應鼠標滾輪。 |
protected String |
paramString()
返回此 JScrollPane 的字元串表示形式。 |
void |
setColumnHeader(JViewport columnHeader)
移除舊的 columnHeader,如果有的話;如果新的 columnHeader 不為 null ,將其 viewPosition 的 x 坐標與視口(如果有)同步然後將其添加到滾動窗格。 |
void |
setColumnHeaderView(Component view)
創建一個列標題視口(如果有必要),設置其視圖然後將此列標題視口添加到滾動窗格。 |
void |
setComponentOrientation(ComponentOrientation co)
設置由 ComponentOrientation 參數確定的垂直和水平滾動條方向。 |
void |
setCorner(String key,
Component corner)
添加一個將顯示在一個滾動窗格角中的子級,如果有空間的話。 |
void |
setHorizontalScrollBar(JScrollBar horizontalScrollBar)
將控制視口水平視圖位置的水平滾動條添加到滾動窗格中。 |
void |
setHorizontalScrollBarPolicy(int policy)
確定水平滾動條何時顯示在滾動窗格上。 |
void |
setLayout(LayoutManager layout)
設置此 JScrollPane 的佈局管理器。 |
void |
setRowHeader(JViewport rowHeader)
移除舊的 rowHeader,如果存在;如果新的 rowHeader 不為 null ,將其 viewPosition 的 y 坐標與視口(如果有)同步然後將其添加到滾動窗格。 |
void |
setRowHeaderView(Component view)
創建一個行標題視口(如果有必要),設置其視圖然後將此行標題視口添加到滾動窗格。 |
void |
setUI(ScrollPaneUI ui)
設置 ScrollPaneUI 物件,它為此元件提供外觀 (L&F)。 |
void |
setVerticalScrollBar(JScrollBar verticalScrollBar)
將控制視口垂直視圖位置的滾動條添加到滾動窗格中。 |
void |
setVerticalScrollBarPolicy(int policy)
確定垂直滾動條何時顯示在滾動窗格上。 |
void |
setViewport(JViewport viewport)
移除舊視口(如果有);強制新視口的 viewPosition 位於 +x,+y 象限中;將行和列標題(如果有)與新視口同步;最後將滾動條和標題與新視口同步。 |
void |
setViewportBorder(Border viewportBorder)
圍繞視口添加一個邊界。 |
void |
setViewportView(Component view)
創建一個視口(如果有必要)並設置其視圖。 |
void |
setWheelScrollingEnabled(boolean handleWheel)
啟用/禁用對鼠標滾輪滾動的移動回應。 |
void |
updateUI()
用一個來自當前預設外觀的 ScrollPaneUI 替換當前的 ScrollPaneUI 物件。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
欄位詳細資訊 |
---|
protected int verticalScrollBarPolicy
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
。
setVerticalScrollBarPolicy(int)
protected int horizontalScrollBarPolicy
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
。
setHorizontalScrollBarPolicy(int)
protected JViewport viewport
JViewport
。
setViewport(javax.swing.JViewport)
protected JScrollBar verticalScrollBar
JScrollBar
。
setVerticalScrollBar(javax.swing.JScrollBar)
protected JScrollBar horizontalScrollBar
JScrollBar
。
setHorizontalScrollBar(javax.swing.JScrollBar)
protected JViewport rowHeader
null
。
setRowHeader(javax.swing.JViewport)
protected JViewport columnHeader
null
。
setColumnHeader(javax.swing.JViewport)
protected Component lowerLeft
null
。
setCorner(java.lang.String, java.awt.Component)
protected Component lowerRight
null
。
setCorner(java.lang.String, java.awt.Component)
protected Component upperLeft
null
。
setCorner(java.lang.String, java.awt.Component)
protected Component upperRight
null
。
setCorner(java.lang.String, java.awt.Component)
建構子詳細資訊 |
---|
public JScrollPane(Component view, int vsbPolicy, int hsbPolicy)
JScrollPane
,它將視圖元件顯示在一個視口中,視圖位置可使用一對滾動條控制。滾動條策略指定滾動條在何時顯示,例如,如果 vsbPolicy
為 VERTICAL_SCROLLBAR_AS_NEEDED
,則只有在垂直查看無法完全顯示時,垂直滾動條才顯示。可用的策略設定在 setVerticalScrollBarPolicy(int)
和 setHorizontalScrollBarPolicy(int)
中列出。
view
- 將顯示在滾動窗格視口中的元件vsbPolicy
- 指定垂直滾動條策略的一個整數hsbPolicy
- 指定水平滾動條策略的一個整數setViewportView(java.awt.Component)
public JScrollPane(Component view)
JScrollPane
,只要元件的內容超過視圖大小就會顯示水平和垂直滾動條。
view
- 將顯示在滾動窗格視口中的元件setViewportView(java.awt.Component)
public JScrollPane(int vsbPolicy, int hsbPolicy)
JScrollPane
。可用的策略設定在 setVerticalScrollBarPolicy(int)
和 setHorizontalScrollBarPolicy(int)
中列出。
vsbPolicy
- 指定垂直滾動條策略的一個整數hsbPolicy
- 指定水平滾動條策略的一個整數setViewportView(java.awt.Component)
public JScrollPane()
JScrollPane
,需要時水平和垂直滾動條都可顯示。
方法詳細資訊 |
---|
public ScrollPaneUI getUI()
ScrollPaneUI
物件setUI(javax.swing.plaf.ScrollPaneUI)
public void setUI(ScrollPaneUI ui)
ScrollPaneUI
物件,它為此元件提供外觀 (L&F)。
ui
- ScrollPaneUI
L&F 物件getUI()
public void updateUI()
ScrollPaneUI
物件。在預設的外觀更改時將被調用。
JComponent
中的 updateUI
JComponent.updateUI()
,
UIManager.getUI(javax.swing.JComponent)
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void setLayout(LayoutManager layout)
JScrollPane
的佈局管理器。此方法覆寫 java.awt.Container
中的 setLayout
,這樣可確保只有屬於 ScrollPaneLayout
的子類別的 LayoutManager
才能在 JScrollPane
中使用。如果 layout
為非 null,將在其上調用 syncWithScrollPane
。
Container
中的 setLayout
layout
- 指定的佈局管理器
ClassCastException
- 如果佈局不是 ScrollPaneLayout
Container.getLayout()
,
Container.setLayout(java.awt.LayoutManager)
public boolean isValidateRoot()
JScrollPane
的任何後代上對 revalidate
的調用將使從此 JScrollPane
開始的整個階層樹接受驗證。
JComponent
中的 isValidateRoot
Container.validate()
,
JComponent.revalidate()
,
JComponent.isValidateRoot()
public int getVerticalScrollBarPolicy()
verticalScrollBarPolicy
屬性setVerticalScrollBarPolicy(int)
public void setVerticalScrollBarPolicy(int policy)
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
policy
- 以上列出的三個值之一
IllegalArgumentException
- 如果 policy
不是以上列出的合法值之一getVerticalScrollBarPolicy()
public int getHorizontalScrollBarPolicy()
horizontalScrollBarPolicy
屬性setHorizontalScrollBarPolicy(int)
public void setHorizontalScrollBarPolicy(int policy)
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
policy
- 以上列出的三個值之一
IllegalArgumentException
- 如果 policy
不是以上列出的合法值之一getHorizontalScrollBarPolicy()
public Border getViewportBorder()
Border
物件。
viewportBorder
屬性setViewportBorder(javax.swing.border.Border)
public void setViewportBorder(Border viewportBorder)
JViewport
不支持 JComponent
邊界屬性。同樣,設置 JScrollPane
的視口並不影響 viewportBorder
屬性。
此屬性的預設值由外觀實作計算。
viewportBorder
- 要添加的邊界getViewportBorder()
,
setViewport(javax.swing.JViewport)
public Rectangle getViewportBorderBounds()
Rectangle
物件public JScrollBar createHorizontalScrollBar()
JScrollPane.ScrollBar
。子類別可以覆寫此方法來強制 ScrollPaneUI
實作使用 JScrollBar
子類別。ScrollPaneUI
實作用它來創建水平滾動條。
JScrollBar
JScrollBar
public JScrollBar getHorizontalScrollBar()
horizontalScrollBar
屬性setHorizontalScrollBar(javax.swing.JScrollBar)
public void setHorizontalScrollBar(JScrollBar horizontalScrollBar)
JScrollPane
預設創建水平和垂直滾動條。
horizontalScrollBar
- 要添加的水平滾動條createHorizontalScrollBar()
,
getHorizontalScrollBar()
public JScrollBar createVerticalScrollBar()
JScrollPane.ScrollBar
。子類別可以覆寫此方法來強制 ScrollPaneUI
實作使用 JScrollBar
子類別。ScrollPaneUI
實作用它來創建垂直滾動條。
JScrollBar
JScrollBar
public JScrollBar getVerticalScrollBar()
verticalScrollBar
屬性setVerticalScrollBar(javax.swing.JScrollBar)
public void setVerticalScrollBar(JScrollBar verticalScrollBar)
JScrollPane
預設創建垂直和水平滾動條。
verticalScrollBar
- 要添加的新垂直滾動條createVerticalScrollBar()
,
getVerticalScrollBar()
protected JViewport createViewport()
JViewport
。在 setViewportView
、setRowHeaderView
和 setColumnHeaderView
中使用它來創建視口(需要時)。子類別可覆寫此方法來返回 JViewport
的一個子類別。
JViewport
public JViewport getViewport()
JViewport
。
viewport
屬性setViewport(javax.swing.JViewport)
public void setViewport(JViewport viewport)
在大多數應用程序中,使用 setViewportView
將視口和視圖添加到滾動窗格更為方便。
viewport
- 要使用的新視口;如果視口為 null
,將依舊移除舊視口並將新視口設置為 null
createViewport()
,
getViewport()
,
setViewportView(java.awt.Component)
public void setViewportView(Component view)
JScrollPane
建構子提供視圖的應用程序應使用此方法指定將顯示在滾動窗格中的滾動元件子級。例如:
JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(myBigComponentToScroll);應用程序不應將子級直接添加到滾動窗格。
view
- 要添加到視口的元件setViewport(javax.swing.JViewport)
,
JViewport.setView(java.awt.Component)
public JViewport getRowHeader()
rowHeader
屬性setRowHeader(javax.swing.JViewport)
public void setRowHeader(JViewport rowHeader)
null
,將其 viewPosition 的 y 坐標與視口(如果有)同步然後將其添加到滾動窗格。
在大多數應用程序中,使用 setRowHeaderView
將行標題元件及其視口添加到滾動窗格更為方便。
rowHeader
- 要使用的新行標題;如果為 null
將依舊移除舊行標題並將新行標題設置為 null
getRowHeader()
,
setRowHeaderView(java.awt.Component)
public void setRowHeaderView(Component view)
JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(myBigComponentToScroll); scrollpane.setRowHeaderView(myBigComponentsRowHeader);
view
- 將作為行標題顯示的元件setRowHeader(javax.swing.JViewport)
,
JViewport.setView(java.awt.Component)
public JViewport getColumnHeader()
columnHeader
屬性setColumnHeader(javax.swing.JViewport)
public void setColumnHeader(JViewport columnHeader)
null
,將其 viewPosition 的 x 坐標與視口(如果有)同步然後將其添加到滾動窗格。
在大多數應用程序中,使用 setColumnHeaderView
將列標題元件及其視口添加到滾動窗格更為方便。
getColumnHeader()
,
setColumnHeaderView(java.awt.Component)
public void setColumnHeaderView(Component view)
JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(myBigComponentToScroll); scrollpane.setColumnHeaderView(myBigComponentsColumnHeader);
view
- 將作為列標題顯示的元件setColumnHeader(javax.swing.JViewport)
,
JViewport.setView(java.awt.Component)
public Component getCorner(String key)
key
值為下列之一:
key
- 如上所示的值之一
null
);如果該鍵無效,則返回 null
setCorner(java.lang.String, java.awt.Component)
public void setCorner(String key, Component corner)
儘管 "corner" 不與任何 beans 屬性簽章比對,產生的 PropertyChange
事件還是將此屬性名設置為 corner key。
key
- 標識元件將顯示的角corner
- 下列元件之一:
IllegalArgumentException
- 如果 corner key 無效public void setComponentOrientation(ComponentOrientation co)
ComponentOrientation
參數確定的垂直和水平滾動條方向。
Component
中的 setComponentOrientation
co
- 以下值之一:
ComponentOrientation
public boolean isWheelScrollingEnabled()
setWheelScrollingEnabled(boolean)
public void setWheelScrollingEnabled(boolean handleWheel)
handleWheel
- 如果為 MouseWheelEvent 自動完成滾動,則為 true
;否則為 false
。isWheelScrollingEnabled()
,
MouseWheelEvent
,
MouseWheelListener
protected String paramString()
JScrollPane
的字元串表示形式。此方法僅在進行除錯的時候使用,對於各個實作,所返回字元串的內容和格式可能有所不同。返回的字元串可能為空,但不可能為 null
。
JComponent
中的 paramString
JScrollPane
的字元串表示形式。public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。