|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent
public abstract class JComponent
該類別是除頂層容器外所有 Swing 元件的基礎類別。要使用繼承自 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
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder
。
KeyStroke
,
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)
巢狀類別摘要 | |
---|---|
class |
JComponent.AccessibleJComponent
用於為可存取性提供預設支持的 JComponent 內部類別。 |
從類別 java.awt.Container 繼承的巢狀類別/介面 |
---|
Container.AccessibleAWTContainer |
從類別 java.awt.Component 繼承的巢狀類別/介面 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
欄位摘要 | |
---|---|
protected AccessibleContext |
accessibleContext
與此 JComponent 關聯的 AccessibleContext 。 |
protected EventListenerList |
listenerList
此元件的事件偵聽器列表。 |
static String |
TOOL_TIP_TEXT_KEY
鼠標位於元件上方時顯示的註釋,也稱為“值提示”、“相交提示 (flyover help)”或“相交標籤 (flyover label)”。 |
protected ComponentUI |
ui
此元件的外觀委託。 |
static int |
UNDEFINED_CONDITION
某些 API 使用的常數,意味著沒有定義任何條件。 |
static int |
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
用於 registerKeyboardAction 的常數,意味著當接收元件是獲得焦點的元件的祖先或者其本身就是獲得焦點的元件時,應該調用命令。 |
static int |
WHEN_FOCUSED
用於 registerKeyboardAction 的常數,意味著在元件獲得焦點時應該調用命令。 |
static int |
WHEN_IN_FOCUSED_WINDOW
用於 registerKeyboardAction 的常數,意味著當接收元件處於獲得焦點的視窗內或者其本身就是獲得焦點的元件時,應該調用命令。 |
從類別 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 |
建構子摘要 | |
---|---|
JComponent()
預設的 JComponent 建構子。 |
方法摘要 | ||
---|---|---|
void |
addAncestorListener(AncestorListener listener)
註冊 listener ,從而當元件或其任意祖先移動,或者變得可見或不可見時該偵聽器將收到 AncestorEvent 。 |
|
void |
addNotify()
通知此元件它現在已有了一個父元件。 |
|
void |
addVetoableChangeListener(VetoableChangeListener listener)
向偵聽器列表添加一個 VetoableChangeListener 。 |
|
void |
computeVisibleRect(Rectangle visibleRect)
返回該 Component 的“可見 rect 矩形”,即此元件及其所有祖先的可見矩形的交集。 |
|
boolean |
contains(int x,
int y)
為了進行鼠標處理,讓 UI 委託來定義此元件的精確形狀。 |
|
JToolTip |
createToolTip()
返回用於顯示工具提示的 JToolTip 實例。 |
|
void |
disable()
已過時。 從 JDK version 1.1 開始,由 java.awt.Component.setEnabled(boolean) 取代。 |
|
void |
enable()
已過時。 從 JDK version 1.1 開始,由 java.awt.Component.setEnabled(boolean) 取代。 |
|
void |
firePropertyChange(String propertyName,
boolean oldValue,
boolean newValue)
支持報告 boolean 屬性的綁定屬性更改。 |
|
void |
firePropertyChange(String propertyName,
char oldValue,
char newValue)
報告綁定屬性的改變。 |
|
void |
firePropertyChange(String propertyName,
int oldValue,
int newValue)
支持報告整數屬性的綁定屬性更改。 |
|
protected void |
fireVetoableChange(String propertyName,
Object oldValue,
Object newValue)
支持報告約束 (constrained) 屬性的更改。 |
|
AccessibleContext |
getAccessibleContext()
返回與此 JComponent 關聯的 AccessibleContext 。 |
|
ActionListener |
getActionForKeyStroke(KeyStroke aKeyStroke)
返回執行針對給定鍵擊而註冊的操作的物件。 |
|
ActionMap |
getActionMap()
返回用於確定為特定 KeyStroke 綁定觸發何種 Action 的 ActionMap 。 |
|
float |
getAlignmentX()
覆寫 Container.getAlignmentX 以返回垂直對齊方式。 |
|
float |
getAlignmentY()
覆寫 Container.getAlignmentY 以返回水平對齊方式。 |
|
AncestorListener[] |
getAncestorListeners()
返回在此元件上註冊的所有祖先偵聽器所組成的陣列。 |
|
boolean |
getAutoscrolls()
獲取 autoscrolls 屬性。 |
|
int |
getBaseline(int width,
int height)
返回基線。 |
|
Component.BaselineResizeBehavior |
getBaselineResizeBehavior()
返回一個列舉,指示元件的基線如何隨大小更改而發生更改。 |
|
Border |
getBorder()
返回此元件的邊框;如果當前未設置邊框,則返回 null 。 |
|
Rectangle |
getBounds(Rectangle rv)
將此元件的邊界存儲到“返回值” rv 中並返回 rv 。 |
|
Object |
getClientProperty(Object key)
返回具有指定鍵的屬性的值。 |
|
protected Graphics |
getComponentGraphics(Graphics g)
返回用於繪製此元件的圖形物件。 |
|
JPopupMenu |
getComponentPopupMenu()
返回為此元件分派的 JPopupMenu 。 |
|
int |
getConditionForKeyStroke(KeyStroke aKeyStroke)
返回確定是否發生已註冊動作以回應指定鍵擊事件的條件。 |
|
int |
getDebugGraphicsOptions()
返回圖形除錯的狀態。 |
|
static Locale |
getDefaultLocale()
返回在創建時,用於初始化每個 JComponent 的語言環境屬性的預設語言環境。 |
|
FontMetrics |
getFontMetrics(Font font)
獲取指定 Font 的 FontMetrics 。 |
|
Graphics |
getGraphics()
返回此元件的圖形上下文,該上下文允許您繪製元件。 |
|
int |
getHeight()
返回此元件的當前高度。 |
|
boolean |
getInheritsPopupMenu()
如果應該從父元件繼承 JPopupMenu,則返回 true。 |
|
InputMap |
getInputMap()
返回元件具有焦點時所使用的 InputMap 。 |
|
InputMap |
getInputMap(int condition)
返回 condition 中所使用的 InputMap 。 |
|
InputVerifier |
getInputVerifier()
返回此元件的輸入校驗器。 |
|
Insets |
getInsets()
如果已在此元件上設置了邊框,則返回該邊框的 insets;否則調用 super.getInsets 。 |
|
Insets |
getInsets(Insets insets)
返回包含此元件 inset 值的 Insets 物件。 |
|
|
getListeners(Class<T> listenerType)
返回當前在此 JComponent 上註冊為 FooListener 的所有物件所組成的陣列。 |
|
Point |
getLocation(Point rv)
將此元件的 x,y 原點存儲到“返回值” rv 中並返回 rv 。 |
|
Dimension |
getMaximumSize()
如果已將最大大小設置為一個非 null 值,則返回該值。 |
|
Dimension |
getMinimumSize()
如果已將最小大小設置為一個非 null 值,則返回該值。 |
|
Component |
getNextFocusableComponent()
已過時。 從 1.4 版本開始,由 FocusTraversalPolicy 取代。 |
|
Point |
getPopupLocation(MouseEvent event)
返回在此元件坐標系統中顯示彈出式選單的首選位置。 |
|
Dimension |
getPreferredSize()
如果 preferredSize 已設置為一個非 null 值,則返回該值。 |
|
KeyStroke[] |
getRegisteredKeyStrokes()
返回啟動已註冊動作的 KeyStrokes 。 |
|
JRootPane |
getRootPane()
返回此元件的 JRootPane 祖先。 |
|
Dimension |
getSize(Dimension rv)
將此元件的寬度/高度存儲到“返回值” rv 中並返回 rv 。 |
|
Point |
getToolTipLocation(MouseEvent event)
返回工具提示在此元件坐標系統中的位置。 |
|
String |
getToolTipText()
返回通過 setToolTipText 所設置的工具提示字元串。 |
|
String |
getToolTipText(MouseEvent event)
返回用作 event 工具提示的字元串。 |
|
Container |
getTopLevelAncestor()
返回此元件的頂層祖先(包含的 Window 或 Applet );如果尚未將此元件添加到任意容器中,則返回 null 。 |
|
TransferHandler |
getTransferHandler()
獲取 transferHandler 屬性。 |
|
String |
getUIClassID()
返回用於尋找 wing.plaf.ComponentUI 類別(定義了此元件的外觀)名的 UIDefaults 鍵。 |
|
boolean |
getVerifyInputWhenFocusTarget()
返回值指示是否在此元件請求焦點前,為當前的焦點所有者調用輸入校驗器。 |
|
VetoableChangeListener[] |
getVetoableChangeListeners()
返回在此元件上註冊的所有可否決更改偵聽器所組成的陣列。 |
|
Rectangle |
getVisibleRect()
返回該 Component 的“可見矩形”,即此元件的可見矩形 new Rectangle(0, 0, getWidth(), getHeight()) 及其所有祖先的可見矩形的交集。 |
|
int |
getWidth()
返回此元件的當前寬度。 |
|
int |
getX()
返回元件原點的當前 x 坐標。 |
|
int |
getY()
返回元件原點的當前 y 坐標。 |
|
void |
grabFocus()
請求此 Component 獲取輸入焦點,並請求此 Component 的頂層祖先成為獲得焦點的 Window。 |
|
boolean |
isDoubleBuffered()
返回此元件是否應該使用緩衝區進行繪製。 |
|
static boolean |
isLightweightComponent(Component c)
如果此元件是輕量的,也就是說,如果它沒有本機視窗系統同位體,則返回 true。 |
|
boolean |
isManagingFocus()
已過時。 從 1.4 版本開始,由 Component.setFocusTraversalKeys(int, Set) 和 Container.setFocusCycleRoot(boolean) 取代。 |
|
boolean |
isOpaque()
如果此元件是完全不透明的,則返回 true。 |
|
boolean |
isOptimizedDrawingEnabled()
如果此元件平鋪顯示其子元件(也就是說,它可以保證子元件不重疊),則返回 true。 |
|
boolean |
isPaintingForPrint()
如果此元件上的當前繪製操作是 print 操作的一部分,則返回 true 。 |
|
boolean |
isPaintingTile()
如果元件當前正在繪製 tile,則返回 true。 |
|
boolean |
isRequestFocusEnabled()
如果此 JComponent 應該獲得焦點,則返回 true ;否則返回 false 。 |
|
boolean |
isValidateRoot()
如果此方法返回 true,則此元件的子代調用 revalidate 將導致從此根開始對整棵階層樹進行驗證。 |
|
void |
paint(Graphics g)
由 Swing 調用,以繪製元件。 |
|
protected void |
paintBorder(Graphics g)
繪製元件的邊框。 |
|
protected void |
paintChildren(Graphics g)
繪製此元件的子元件。 |
|
protected void |
paintComponent(Graphics g)
如果 UI 委託為非 null ,則調用該 UI 委託的 paint 方法。 |
|
void |
paintImmediately(int x,
int y,
int w,
int h)
立即繪製此元件及其與該區域重疊的子代中的指定區域。 |
|
void |
paintImmediately(Rectangle r)
立即繪製指定的區域。 |
|
protected String |
paramString()
返回此 JComponent 的字元串表示形式。 |
|
void |
print(Graphics g)
調用此方法列印指定 Graphics 的元件。 |
|
void |
printAll(Graphics g)
調用此方法列印元件。 |
|
protected void |
printBorder(Graphics g)
列印元件的邊框。 |
|
protected void |
printChildren(Graphics g)
列印此元件的子元件。 |
|
protected void |
printComponent(Graphics g)
在列印操作期間調用此方法。 |
|
protected void |
processComponentKeyEvent(KeyEvent e)
處理該元件本身可識別的所有鍵事件。 |
|
protected boolean |
processKeyBinding(KeyStroke ks,
KeyEvent e,
int condition,
boolean pressed)
由於發生 KeyEvent e 而調用此方法處理 ks 的鍵綁定。 |
|
protected void |
processKeyEvent(KeyEvent e)
覆寫 processKeyEvent 以處理事件。 |
|
protected void |
processMouseEvent(MouseEvent e)
處理此元件上發生的鼠標事件,通過將其指派到任意已註冊的 MouseListener 物件來完成,有關此方法的完整描述,請參閱 Component.processMouseEvent(MouseEvent) 。 |
|
protected void |
processMouseMotionEvent(MouseEvent e)
處理鼠標移動事件,如 MouseEvent.MOUSE_DRAGGED。 |
|
void |
putClientProperty(Object key,
Object value)
向此元件添加任意的鍵/值“客戶端屬性”。 |
|
void |
registerKeyboardAction(ActionListener anAction,
KeyStroke aKeyStroke,
int aCondition)
此方法現在已過時,對於類似的操作,請結合使用 getActionMap() 和 getInputMap() 。 |
|
void |
registerKeyboardAction(ActionListener anAction,
String aCommand,
KeyStroke aKeyStroke,
int aCondition)
此方法現在已過時,對於類似的操作,請結合使用 getActionMap() 和 getInputMap() 。 |
|
void |
removeAncestorListener(AncestorListener listener)
註銷 listener ,使其不再接收 AncestorEvent 。 |
|
void |
removeNotify()
通知此元件它不再有父元件。 |
|
void |
removeVetoableChangeListener(VetoableChangeListener listener)
從偵聽器列表移除一個 VetoableChangeListener 。 |
|
void |
repaint(long tm,
int x,
int y,
int width,
int height)
如果要顯示元件,則將指定的區域添加到髒區 (dirty region) 列表。 |
|
void |
repaint(Rectangle r)
如果要顯示該元件,則將指定的區域添加到髒區列表。 |
|
boolean |
requestDefaultFocus()
已過時。 從 1.4 版本開始,由 FocusTraversalPolicy.getDefaultComponent(Container).requestFocus() 取代 |
|
void |
requestFocus()
請求此 Component 獲取輸入焦點。 |
|
boolean |
requestFocus(boolean temporary)
請求此 Component 獲取輸入焦點。 |
|
boolean |
requestFocusInWindow()
請求此 Component 獲取輸入焦點。 |
|
protected boolean |
requestFocusInWindow(boolean temporary)
請求此 Component 獲取輸入焦點。 |
|
void |
resetKeyboardActions()
註銷首層 InputMaps 和 ActionMap 中的所有綁定。 |
|
void |
reshape(int x,
int y,
int w,
int h)
已過時。 從 JDK 5 開始,由 Component.setBounds(int, int, int, int) 取代。
移動此元件並調整其大小。 |
|
void |
revalidate()
支持推遲的自動佈局。 |
|
void |
scrollRectToVisible(Rectangle aRect)
將 scrollRectToVisible() 訊息轉發到 JComponent 的父元件。 |
|
void |
setActionMap(ActionMap am)
將 ActionMap 設置為 am 。 |
|
void |
setAlignmentX(float alignmentX)
設置垂直對齊方式。 |
|
void |
setAlignmentY(float alignmentY)
設置水平對齊方式。 |
|
void |
setAutoscrolls(boolean autoscrolls)
設置 autoscrolls 屬性。 |
|
void |
setBackground(Color bg)
設置此元件的背景色。 |
|
void |
setBorder(Border border)
設置此元件的邊框。 |
|
void |
setComponentPopupMenu(JPopupMenu popup)
設置此 JComponent 的 JPopupMenu 。 |
|
void |
setDebugGraphicsOptions(int debugOptions)
啟用或禁用與元件或其某個子元件內執行的每個圖形操作有關的診斷資訊。 |
|
static void |
setDefaultLocale(Locale l)
設置在創建時,用於初始化每個 JComponent 的語言環境屬性的預設語言環境。 |
|
void |
setDoubleBuffered(boolean aFlag)
設置此元件是否應該使用緩衝區進行繪製。 |
|
void |
setEnabled(boolean enabled)
設置是否啟用此元件。 |
|
void |
setFocusTraversalKeys(int id,
Set<? extends AWTKeyStroke> keystrokes)
設置針對此 Component 的給定遍歷操作的焦點遍歷鍵。 |
|
void |
setFont(Font font)
設置此元件的字體。 |
|
void |
setForeground(Color fg)
設置此元件的前景色。 |
|
void |
setInheritsPopupMenu(boolean value)
設置如果此元件沒有分派給它的 JPopupMenu ,那麼 getComponentPopupMenu 是否應該委託給其父元件。 |
|
void |
setInputMap(int condition,
InputMap map)
設置在 map 的 condition 條件下要使用的 InputMap 。 |
|
void |
setInputVerifier(InputVerifier inputVerifier)
設置此元件的輸入校驗器。 |
|
void |
setMaximumSize(Dimension maximumSize)
將此元件的最大大小設置為一個常數值。 |
|
void |
setMinimumSize(Dimension minimumSize)
將此元件的最小大小設置為一個常數值。 |
|
void |
setNextFocusableComponent(Component aComponent)
已過時。 從 1.4 版本開始,由 FocusTraversalPolicy 取代 |
|
void |
setOpaque(boolean isOpaque)
如果為 true,則該元件繪製其邊界內的所有像素。 |
|
void |
setPreferredSize(Dimension preferredSize)
設置此元件的首選大小。 |
|
void |
setRequestFocusEnabled(boolean requestFocusEnabled)
提供一個關於此 JComponent 是否應該獲得焦點的提示。 |
|
void |
setToolTipText(String text)
註冊要在工具提示中顯示的文本。 |
|
void |
setTransferHandler(TransferHandler newHandler)
設置 transferHandler 屬性;如果該元件不支持資料傳輸操作,則為 null 。 |
|
protected void |
setUI(ComponentUI newUI)
設置此元件的外觀委託。 |
|
void |
setVerifyInputWhenFocusTarget(boolean verifyInputWhenFocusTarget)
設置該值指示是否在此元件請求焦點前,為當前的焦點所有者調用輸入校驗器。 |
|
void |
setVisible(boolean aFlag)
使該元件可見或不可見。 |
|
void |
unregisterKeyboardAction(KeyStroke aKeyStroke)
此方法現在已過時。 |
|
void |
update(Graphics g)
調用 paint 。 |
|
void |
updateUI()
將 UI 屬性重置為當前外觀的值。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
欄位詳細資訊 |
---|
protected transient ComponentUI ui
protected EventListenerList listenerList
public static final int WHEN_FOCUSED
registerKeyboardAction
的常數,意味著在元件獲得焦點時應該調用命令。
public static final int WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
registerKeyboardAction
的常數,意味著當接收元件是獲得焦點的元件的祖先或者其本身就是獲得焦點的元件時,應該調用命令。
public static final int WHEN_IN_FOCUSED_WINDOW
registerKeyboardAction
的常數,意味著當接收元件處於獲得焦點的視窗內或者其本身就是獲得焦點的元件時,應該調用命令。
public static final int UNDEFINED_CONDITION
public static final String TOOL_TIP_TEXT_KEY
protected AccessibleContext accessibleContext
JComponent
關聯的 AccessibleContext
。
建構子詳細資訊 |
---|
public JComponent()
JComponent
建構子。除調用 Container
建構子外,此建構子幾乎不進行初始化工作。例如,初始佈局管理器為 null
。但是,它將元件的語言環境屬性設置為 JComponent.getDefaultLocale
所返回的值。
getDefaultLocale()
方法詳細資訊 |
---|
public void setInheritsPopupMenu(boolean value)
JPopupMenu
,那麼 getComponentPopupMenu
是否應該委託給其父元件。
此方法的預設值是 false,但是某些作為多個 JComponent
實作的 JComponent
子類別可能將其設置為 true。
這是一個綁定 (bound) 屬性。
value
- JPopupMenu 是否是繼承的setComponentPopupMenu(javax.swing.JPopupMenu)
public boolean getInheritsPopupMenu()
setComponentPopupMenu(javax.swing.JPopupMenu)
public void setComponentPopupMenu(JPopupMenu popup)
JComponent
的 JPopupMenu
。UI 負責註冊綁定並添加必要的偵聽器,這樣可在恰當的時間顯示 JPopupMenu
。何時顯示 JPopupMenu
取決於外觀:有些在鼠標事件中顯示它,另一些則啟用鍵綁定。
如果 popup
為 null,並且 getInheritsPopupMenu
返回 true,則將 getComponentPopupMenu
委託給父級。這將允許所有子元件繼承父元件的 popupmenu。
這是一個綁定屬性。
popup
- - 分派給此元件的彈出選單,可以為 nullgetComponentPopupMenu()
public JPopupMenu getComponentPopupMenu()
JPopupMenu
。如果尚未給此元件分派 JPopupMenu
並且 getInheritsPopupMenu
為 true,則此方法返回 getParent().getComponentPopupMenu()
(假定父元件是有效的)。
JPopupMenu
;如果未分派彈出選單,則為 null
setComponentPopupMenu(javax.swing.JPopupMenu)
public void updateUI()
JComponent
子類別必須用以下方式覆寫此方法:
public void updateUI() { setUI((SliderUI)UIManager.getUI(this); }
setUI(javax.swing.plaf.ComponentUI)
,
UIManager.getLookAndFeel()
,
UIManager.getUI(javax.swing.JComponent)
protected void setUI(ComponentUI newUI)
JComponent
子類別通常覆寫此方法,以縮小參數型別。例如,在 JSlider
中:
public void setUI(SliderUI newUI) { super.setUI(newUI); }
此外,JComponent
子類別必須提供一個返回正確型別的 getUI
方法。例如:
public SliderUI getUI() { return (SliderUI)ui; }
newUI
- 新的 UI 委託updateUI()
,
UIManager.getLookAndFeel()
,
UIManager.getUI(javax.swing.JComponent)
public String getUIClassID()
wing.plaf.ComponentUI
類別(定義了此元件的外觀)名的 UIDefaults
鍵。大多數應用程序無需調用此方法。支持可插入外觀的 JComponent
子類別應該覆寫此方法,以返回映射到定義其外觀的 ComponentUI
子類別的 UIDefaults
鍵。
ComponentUI
子類別的 UIDefaults
鍵UIDefaults.getUI(javax.swing.JComponent)
protected Graphics getComponentGraphics(Graphics g)
DebugGraphics
,則根據需要創建一個新的 DebugGraphics
物件。否則只是配置指定圖形物件的前景和字體。
g
- 原 Graphics
物件
Graphics
物件protected void paintComponent(Graphics g)
null
,則調用該 UI 委託的 paint 方法。向該委託傳遞 Graphics
物件的副本,以保護其餘的 paint 程式碼免遭不可取消的更改(例如 Graphics.translate
)。
如果在子類別中覆寫此方法,則不應該對傳入的 Graphics
進行永久更改。例如,不應更改剪貼區的 Rectangle
或修改轉換。如果需要進行這些操作,您會發現根據傳入的 Graphics
創建一個新 Graphics
並進行操作更加方便。另外,如果不調用父級類別的實作,則必須遵守不透明屬性,也就是說,如果此元件是不透明的,則必須以透明的顏色完全填充背景。如果不遵守不透明屬性,則很可能看到可視的人為內容。
傳入的 Graphics
物件可能安裝了恆等轉換以外的轉換。在這種情況下,如果多次應用其他轉換,則可能得到不可預料的結果。
g
- 要保護的 Graphics
物件paint(java.awt.Graphics)
,
ComponentUI
protected void paintChildren(Graphics g)
shouldUseBuffer
為 true,那麼所有的元件祖先都沒有緩衝區,且元件的子元件可以使用緩衝區(如果有)。否則,有一個祖先具有當前正在使用的緩衝區,且子元件不應該使用緩衝區進行繪製。
g
- 在其中進行繪製的 Graphics
上下文paint(java.awt.Graphics)
,
Container.paint(java.awt.Graphics)
protected void paintBorder(Graphics g)
如果在子類別中覆寫此方法,則不應該對傳入的 Graphics
進行永久更改。例如,不應更改剪貼區的 Rectangle
或修改轉換。如果需要進行這些操作,您會發現根據傳入的 Graphics
創建一個新 Graphics
並進行操作更加方便。
g
- 在其中進行繪製的 Graphics
上下文paint(java.awt.Graphics)
,
setBorder(javax.swing.border.Border)
public void update(Graphics g)
paint
。不清除背景,而是查看 ComponentUI.update
,它由 paintComponent
調用。
Container
中的 update
g
- 在其中進行繪製的 Graphics
上下文paint(java.awt.Graphics)
,
paintComponent(java.awt.Graphics)
,
ComponentUI
public void paint(Graphics g)
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)
public void printAll(Graphics g)
print
。
Component
中的 printAll
g
- 在其中進行繪製的 Graphics
上下文print(java.awt.Graphics)
,
printComponent(java.awt.Graphics)
,
printBorder(java.awt.Graphics)
,
printChildren(java.awt.Graphics)
public void print(Graphics g)
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()
protected void printComponent(Graphics g)
paintComponent
。如果要在列印時添加特殊的繪製行為,可覆寫此方法。
g
- 在其中進行繪製的 Graphics
上下文print(java.awt.Graphics)
protected void printChildren(Graphics g)
paintChildren
。如果希望以不同於繪製的方式列印子元件,則覆寫此方法。
g
- 在其中進行繪製的 Graphics
上下文print(java.awt.Graphics)
protected void printBorder(Graphics g)
paintBorder
。如果要以和繪製該邊框所不同的方式來列印邊框,則覆寫此方法。
g
- 在其中進行繪製的 Graphics
上下文print(java.awt.Graphics)
public boolean isPaintingTile()
public final boolean isPaintingForPrint()
print
操作的一部分,則返回 true
。當想要定制所列印的內容以及在螢幕上顯示的內容時,此方法很有用。
通過偵聽此元件上名為 "paintingForPrint"
的屬性更改事件,可以檢測此屬性值中的更改。
註:此方法也提供其他高層級別 Swing 列印 API 所提供的功能。但是,它嚴格處理繪製操作,不要因為高層級別列印進程上提供的資訊相混淆。例如,JTable.print()
操作不一定會連續呈現完整的元件,此方法的返回值在該操作中可多次更改。元件甚至有可能在列印進程正在進行時便繪製到螢幕。在這種情況下,當且僅當該表作為列印進程的一部分進行繪製時,此方法的返回值為 true
。
print(java.awt.Graphics)
@Deprecated 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
@Deprecated public void setNextFocusableComponent(Component aComponent)
FocusTraversalPolicy
取代
為此 JComponent
的焦點遍歷循環覆寫預設的 FocusTraversalPolicy
:無條件地將指定的 Component
設置為循環中的下一個 Component
,並將此 JComponent
設置為循環中指定 Component
的前一個 Component
。
aComponent
- 焦點遍歷循環中應該跟在此 JComponent
後的 Component
getNextFocusableComponent()
,
FocusTraversalPolicy
@Deprecated public Component getNextFocusableComponent()
FocusTraversalPolicy
取代。
返回之前對此 JComponent
調用 setNextFocusableComponent(Component)
所設置的 Component
。
JComponent
後的 Component
;如果尚未顯式地指定,則為 null
setNextFocusableComponent(java.awt.Component)
public void setRequestFocusEnabled(boolean requestFocusEnabled)
JComponent
是否應該獲得焦點的提示。這只是一個提示,由使用者決定請求焦點是否遵守此屬性。鼠標操作通常遵守此屬性,而鍵盤操作則並非如此。例如,在鼠標操作期間,外觀可以在請求焦點前驗證此屬性是否為 true。如果不想在 JComponent
上按下鼠標以獲得焦點,而是希望通過鍵盤遍歷 JComponent
,則要多次使用此方法。如果不希望此 JComponent
可聚焦,請使用 setFocusable
方法。
有關更多資訊,請參閱 The Java Tutorial 中的 How to Use the Focus Subsystem 一節。
requestFocusEnabled
- 指示是否希望此 JComponent
可聚焦Component.setFocusable(boolean)
public boolean isRequestFocusEnabled()
JComponent
應該獲得焦點,則返回 true
;否則返回 false
。
有關更多資訊,請參閱 The Java Tutorial 中的 How to Use the Focus Subsystem 一節。
true
;否則返回 false
setRequestFocusEnabled(boolean)
,
Focus Specification,
Component.isFocusable()
public void requestFocus()
Component
獲取輸入焦點。有關此方法的完整描述,請參閱 Component.requestFocus()
。
注意,不推薦使用此方法,因為其行為與平臺有關。建議使用 requestFocusInWindow()
。若要瞭解有關焦點的更多資訊,請參閱 The Java Tutorial 中的
How to Use the Focus Subsystem 一節。
Component
中的 requestFocus
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
public boolean requestFocus(boolean temporary)
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)
public boolean requestFocusInWindow()
Component
獲取輸入焦點。有關此方法的完整描述,請參閱 Component.requestFocusInWindow()
。
若要瞭解有關焦點的更多資訊,請參閱 The Java Tutorial 中的 How to Use the Focus Subsystem 一節。
Component
中的 requestFocusInWindow
false
;如果有可能成功,則返回 true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
protected boolean requestFocusInWindow(boolean temporary)
Component
獲取輸入焦點。有關此方法的完整描述,請參閱 Component.requestFocusInWindow(boolean)
。
若要瞭解有關焦點的更多資訊,請參閱 The Java Tutorial 中的 How to Use the Focus Subsystem 一節。
Component
中的 requestFocusInWindow
temporary
- boolean 值,指示焦點更改是否為臨時的
false
;如果有可能成功,則返回 true
Component.requestFocusInWindow()
,
Component.requestFocusInWindow(boolean)
public void grabFocus()
此方法用於焦點實作。客戶端程式碼不應使用此方法;相反,它應該使用 requestFocusInWindow()
。
requestFocusInWindow()
public void setVerifyInputWhenFocusTarget(boolean verifyInputWhenFocusTarget)
verifyInputWhenFocusTarget
- verifyInputWhenFocusTarget
屬性的值InputVerifier
,
setInputVerifier(javax.swing.InputVerifier)
,
getInputVerifier()
,
getVerifyInputWhenFocusTarget()
public boolean getVerifyInputWhenFocusTarget()
verifyInputWhenFocusTarget
屬性的值InputVerifier
,
setInputVerifier(javax.swing.InputVerifier)
,
getInputVerifier()
,
setVerifyInputWhenFocusTarget(boolean)
public FontMetrics getFontMetrics(Font font)
Font
的 FontMetrics
。
Component
中的 getFontMetrics
font
- 要獲取其字體規格的字體
font
的字體規格
NullPointerException
- 如果 font
為 nullComponent.getFont()
,
Component.getPeer()
,
ComponentPeer.getFontMetrics(Font)
,
Toolkit.getFontMetrics(Font)
public void setPreferredSize(Dimension preferredSize)
preferredSize
為 null
,則要求 UI 提供首選大小。
Component
中的 setPreferredSize
preferredSize
- 新的首選大小,或者為 nullComponent.getPreferredSize()
,
Component.isPreferredSizeSet()
public Dimension getPreferredSize()
preferredSize
已設置為一個非 null
值,則返回該值。如果 UI 委託的 getPreferredSize
方法返回一個非 null
值,則返回該值;否則服從元件的佈局管理器。
Container
中的 getPreferredSize
preferredSize
屬性的值setPreferredSize(java.awt.Dimension)
,
ComponentUI
public void setMaximumSize(Dimension maximumSize)
getMaximumSize
的後續調用將始終返回此值;而不要求元件的 UI 計算它。將最大大小設置為 null
可恢復預設行為。
Component
中的 setMaximumSize
maximumSize
- 一個套件含所需最大允許大小的 Dimension
getMaximumSize()
public Dimension getMaximumSize()
null
值,則返回該值。如果 UI 委託的 getMaximumSize
方法返回一個非 null
值,則返回該值;否則服從元件的佈局管理器。
Container
中的 getMaximumSize
maximumSize
屬性的值setMaximumSize(java.awt.Dimension)
,
ComponentUI
public void setMinimumSize(Dimension minimumSize)
getMinimumSize
的後續調用將始終返回此值;不會要求元件的 UI 計算它。將最小大小設置為 null
可恢復預設行為。
Component
中的 setMinimumSize
minimumSize
- 此元件新的最小大小getMinimumSize()
public Dimension getMinimumSize()
null
值,則返回該值。如果 UI 委託的 getMinimumSize
方法返回一個非 null
值,則返回該值;否則服從元件的佈局管理器。
Container
中的 getMinimumSize
minimumSize
屬性的值setMinimumSize(java.awt.Dimension)
,
ComponentUI
public boolean contains(int x, int y)
Component
中的 contains
x
- 該點的 x 坐標y
- 該點的 y 坐標
Component.contains(int, int)
,
ComponentUI
public void setBorder(Border border)
Border
物件負責定義元件的 insets(直接對元件覆寫所有 insets 設置),並且可選地呈現這些 insets 範圍內的邊框裝飾。要為 swing 元件創建有裝飾的和無裝飾的區域(例如邊距和填充),應該使用邊框(而不是 insets)。在單個元件中可使用復合邊框來巢狀多個邊框。
雖然從技術上講可以在繼承自 JComponent
的所有物件上設置邊框,但是很多標準 Swing 元件的外觀實作無法正常地使用使用者設置的邊框。通常,如果希望在標準的 Swing 元件而不是 JPanel
或 JLabel
上設置邊框時,建議將元件放入 JPanel
中,並在 JPanel
上設置邊框。
這是一個綁定屬性。
border
- 要為此元件呈現的邊框Border
,
CompoundBorder
public Border getBorder()
null
。
setBorder(javax.swing.border.Border)
public Insets getInsets()
super.getInsets
。
Container
中的 getInsets
setBorder(javax.swing.border.Border)
public Insets getInsets(Insets insets)
Insets
物件。如有可能,將重用傳入的 Insets
物件。但是不能假定調用這些方法將返回相同的物件。覆寫此物件內所有現有值。如果 insets
為 null,則此方法將分派一個新的 insets。
insets
- Insets
物件,它可以被重用
Insets
物件getInsets()
public float getAlignmentY()
Container.getAlignmentY
以返回水平對齊方式。
Container
中的 getAlignmentY
alignmentY
屬性的值setAlignmentY(float)
,
Component.getAlignmentY()
public void setAlignmentY(float alignmentY)
alignmentY
- 新的水平對齊方式getAlignmentY()
public float getAlignmentX()
Container.getAlignmentX
以返回垂直對齊方式。
Container
中的 getAlignmentX
alignmentX
屬性的值setAlignmentX(float)
,
Component.getAlignmentX()
public void setAlignmentX(float alignmentX)
alignmentX
- 新的垂直對齊方式getAlignmentX()
public void setInputVerifier(InputVerifier inputVerifier)
inputVerifier
- 新的輸入校驗器InputVerifier
public InputVerifier getInputVerifier()
inputVerifier
屬性InputVerifier
public Graphics getGraphics()
Graphics
物件,然後在該物件上調用操作,以便繪製元件。
Component
中的 getGraphics
Component.paint(java.awt.Graphics)
public void setDebugGraphicsOptions(int debugOptions)
debugOptions
- 確定元件應該如何顯示資訊;為下列選項之一:
ExternalWindow
,顯示在 View 的脫屏緩衝區上執行的操作。
debugOptions
按位或運算的結果public int getDebugGraphicsOptions()
ExternalWindow
,顯示在 View 的脫屏緩衝區上執行的操作。
setDebugGraphicsOptions(int)
public void registerKeyboardAction(ActionListener anAction, String aCommand, KeyStroke aKeyStroke, int aCondition)
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
可以為:
- WHEN_FOCUSED
- 僅在發生鍵擊、同時元件具有焦點時才調用該動作。
- WHEN_IN_FOCUSED_WINDOW
- 當發生鍵擊、同時元件具有焦點時,或者元件處於具有焦點的視窗中時調用該動作。注意,該元件無需是該視窗的直接子級,它可以處於視窗包含層次結構中的任意位置。換句話說,只要視窗中的任意 元件具有焦點,就調用向此元件註冊的動作。
- WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
- 當發生鍵擊、同時元件具有焦點時,或者該元件是具有焦點的元件的祖先時調用該動作。
這種鍵擊和條件的組合允許您為指定的鍵擊+修改鍵組合定義高層級別(語義)的動作事件(使用 KeyStroke 類別),並導向具有焦點的元件的父元件或子元件,或者該元件本身。換句話說,在任意的元件層次結構中,可將任意的鍵組合導向層次結構中的適當元件,並調用具體的方法(通常通過適配器物件的方式)。
如果已經使用相同的 charCode 和修改鍵為接收容器註冊了某個動作,則 anAction
將取代該動作。
anAction
- 要註冊的 Action
aCommand
- 要在傳遞的事件中設置的命令aKeyStroke
- 與動作綁定的 KeyStroke
aCondition
- 要符合的條件,見上文KeyStroke
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
中移除綁定。
public KeyStroke[] getRegisteredKeyStrokes()
KeyStrokes
。
KeyStroke
物件陣列registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)
public int getConditionForKeyStroke(KeyStroke aKeyStroke)
對於 Java 2 平臺 v1.3,一個 KeyStroke
可與多個條件關聯。例如,'a' 可以和兩個條件 WHEN_FOCUSED
和 WHEN_IN_FOCUSED_WINDOW
綁定。
public ActionListener getActionForKeyStroke(KeyStroke aKeyStroke)
ActionListener
物件public void resetKeyboardActions()
InputMaps
和 ActionMap
中的所有綁定。此操作可以移除所有的本地綁定,並允許保留父 InputMap/ActionMaps
中定義的綁定(通常在第二層定義 UI)。
public final void setInputMap(int condition, InputMap map)
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
不是上面指定的合法值之一public final InputMap getInputMap(int condition)
condition
中所使用的 InputMap
。
condition
- WHEN_IN_FOCUSED_WINDOW、WHEN_FOCUSED、WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 之一
condition
的 InputMap
public final InputMap getInputMap()
InputMap
。這是 getInputMap(WHEN_FOCUSED)
的一個便捷方法。
InputMap
public final void setActionMap(ActionMap am)
ActionMap
設置為 am
。此方法不會將 am
的父級設置成 UI 的 ActionMap
(如果有),由調用者決定是否這樣做。
am
- 新的 ActionMap
public final ActionMap getActionMap()
KeyStroke
綁定觸發何種 Action
的 ActionMap
。除非另行設置,否則返回的 ActionMap
將 UI 的 ActionMap
設置為其父級。
ActionMap
public int getBaseline(int width, int height)
LayoutManager
,以便沿元件的基線對齊元件。返回值小於 0 表示此元件沒有合理的基線,並且 LayoutManager
不應該根據該元件的基線來對齊此元件。
此方法調用相同名稱的 ComponentUI
方法。如果此元件不具有 ComponentUI
,則返回 -1。如果返回大於等於 0 的值,則該元件有一個對於任何大於等於最小大小的大小均有效的基線,並且可以使用 getBaselineResizeBehavior
確定基線如何隨大小發生更改。
Component
中的 getBaseline
width
- 適合基線的寬度height
- 適合基線的高度
IllegalArgumentException
- 如果 width 或 height < 0getBaselineResizeBehavior()
,
FontMetrics
public Component.BaselineResizeBehavior getBaselineResizeBehavior()
此方法調用相同名稱的 ComponentUI
方法。如果此元件不具有 ComponentUI
,則返回 BaselineResizeBehavior.OTHER
。子類別不應該返回 null
;如果無法計算基線,則返回 BaselineResizeBehavior.OTHER
。調用者應該首先使用 getBaseline
詢問基線,如果返回值大於等於 0,則使用此方法。此方法返回一個 BaselineResizeBehavior.OTHER
以外的值是可以接受的,即使 getBaseline
返回一個小於 0 的值。
Component
中的 getBaselineResizeBehavior
getBaseline(int, int)
@Deprecated public boolean requestDefaultFocus()
FocusTraversalPolicy.getDefaultComponent(Container).requestFocus()
取代
請求此 JComponent
FocusTraversalPolicy
的預設 Component
上的焦點。如果此 JComponent
是焦點循環根,則使用其 FocusTraversalPolicy
。否則,使用此 JComponent
的焦點循環根祖先的 FocusTraversalPolicy
。
FocusTraversalPolicy.getDefaultComponent(java.awt.Container)
public void setVisible(boolean aFlag)
Component.setVisible
。
Component
中的 setVisible
aFlag
- true 使該元件可見;false 使其不可見Component.isVisible()
public void setEnabled(boolean enabled)
註:禁用某個元件不會禁用其子元件。
註:禁用輕量元件不會阻止其接收 MouseEvent。
Component
中的 setEnabled
enabled
- 如果應該啟用此元件,則為 true;否則為 falseComponent.isEnabled()
,
Component.isLightweight()
public void setForeground(Color fg)
Component
中的 setForeground
fg
- 所需的前景 Color
Component.getForeground()
public void setBackground(Color bg)
JComponent
或 ComponentUI
實作的子類別使用。JComponent
的直接子類別必須覆寫 paintComponent
以遵守此屬性。
由外觀決定是否遵守此屬性,某些外觀可以選擇忽略它。
Component
中的 setBackground
bg
- 所需的背景 Color
Component.getBackground()
,
setOpaque(boolean)
public void setFont(Font font)
Container
中的 setFont
font
- 此元件所需的 Font
Component.getFont()
public static Locale getDefaultLocale()
Locale
。setDefaultLocale(java.util.Locale)
,
Component.getLocale()
,
Component.setLocale(java.util.Locale)
public static void setDefaultLocale(Locale l)
l
- 所需的預設 Locale
,用於新的元件。getDefaultLocale()
,
Component.getLocale()
,
Component.setLocale(java.util.Locale)
protected void processComponentKeyEvent(KeyEvent e)
實作此方法不執行任何操作。如果子類別本身處理某些鍵事件,則這些子類別通常覆寫此方法。如果事件已經處理,則使用該事件。
protected void processKeyEvent(KeyEvent e)
processKeyEvent
以處理事件。
Component
中的 processKeyEvent
e
- 按鍵事件KeyEvent
,
KeyListener
,
KeyboardFocusManager
,
DefaultKeyboardFocusManager
,
Component.processEvent(java.awt.AWTEvent)
,
Component.dispatchEvent(java.awt.AWTEvent)
,
Component.addKeyListener(java.awt.event.KeyListener)
,
Component.enableEvents(long)
,
Component.isShowing()
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
KeyEvent
e
而調用此方法處理 ks
的鍵綁定。此方法將獲取適當的 InputMap
、獲取綁定、從 ActionMap
獲取動作,然後(如果找到該動作並且已啟用該元件)調用 notifyAction
來通知該動作。
ks
- 被查詢的 KeyStroke
e
- KeyEvent
condition
- 為下列值之一:
pressed
- 如果鍵被按下,則為 true
public void setToolTipText(String text)
有關更多資訊,請參閱 The Java Tutorial 中的 How to Use Tool Tips。
text
- 要顯示的字元串;如果 text 為 null
,則關閉此元件的工具提示TOOL_TIP_TEXT_KEY
public String getToolTipText()
setToolTipText
所設置的工具提示字元串。
TOOL_TIP_TEXT_KEY
public String getToolTipText(MouseEvent event)
setToolTipText
設置的任意字元串。如果元件提供了進一步擴展的 API,以支持不同位置的不同工具提示,則應覆寫此方法。
public Point getToolTipLocation(MouseEvent event)
null
,則 Swing 將選擇某個位置。預設實作返回 null
。
event
- 導致 ToolTipManager
顯示工具提示的 MouseEvent
null
public Point getPopupLocation(MouseEvent event)
null
,則外觀將選擇一個合適的位置。
event
- 觸發顯示彈出式選單的 MouseEvent
;如果不是因鼠標事件而顯示彈出式選單,則為 null
JPopupMenu
的位置,或者返回 null
public JToolTip createToolTip()
JToolTip
實例。元件通常不覆寫此方法,但是可將其用於以不同的方式顯示不同的工具提示。
JToolTip
public void scrollRectToVisible(Rectangle aRect)
scrollRectToVisible()
訊息轉發到 JComponent
的父元件。可執行該請求的元件(如 JViewport
)會覆寫此方法並執行滾動。
aRect
- 可見的 Rectangle
JViewport
public void setAutoscrolls(boolean autoscrolls)
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,則在將鼠標拖動到元件的邊界外並且繼續按下鼠標按鍵時,產生人為鼠標拖動事件;否則為 falsegetAutoscrolls()
,
JViewport
,
JScrollPane
public boolean getAutoscrolls()
autoscrolls
屬性。
autoscrolls
屬性的值JViewport
,
setAutoscrolls(boolean)
public void setTransferHandler(TransferHandler newHandler)
transferHandler
屬性;如果該元件不支持資料傳輸操作,則為 null
。
如果 newHandler
不為 null
並且系統屬性 suppressSwingDropSupport
不為 true,則此方法將在 JComponent
上安裝一個 DropTarget
。該系統屬性的預設值為 false,所以將添加一個 DropTarget
。
有關更多資訊,請參閱 The Java Tutorial 中的 How to Use Drag and Drop and Data Transfer 一節。
newHandler
- 在元件之間傳輸資料的機制TransferHandler
,
getTransferHandler()
public TransferHandler getTransferHandler()
transferHandler
屬性。
transferHandler
屬性的值TransferHandler
,
setTransferHandler(javax.swing.TransferHandler)
protected void processMouseEvent(MouseEvent e)
MouseListener
物件來完成,有關此方法的完整描述,請參閱 Component.processMouseEvent(MouseEvent)
。
Component
中的 processMouseEvent
e
- 鼠標事件Component.processMouseEvent(java.awt.event.MouseEvent)
protected void processMouseMotionEvent(MouseEvent e)
Component
中的 processMouseMotionEvent
e
- the MouseEvent
MouseEvent
@Deprecated public void enable()
java.awt.Component.setEnabled(boolean)
取代。
Component
中的 enable
@Deprecated public void disable()
java.awt.Component.setEnabled(boolean)
取代。
Component
中的 disable
public AccessibleContext getAccessibleContext()
JComponent
關聯的 AccessibleContext
。此基礎類別所實作的方法返回 null。擴展 JComponent
的類別應該實作此方法,以返回與子類別關聯的 AccessibleContext
。
Component
中的 getAccessibleContext
JComponent
的 AccessibleContext
public final Object getClientProperty(Object key)
putClientProperty
添加的屬性才返回非 null
值。
key
- 查詢的內容
null
putClientProperty(java.lang.Object, java.lang.Object)
public final void putClientProperty(Object key, Object value)
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)
public void setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
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
public static boolean isLightweightComponent(Component c)
@Deprecated public void reshape(int x, int y, int w, int h)
Component.setBounds(int, int, int, int)
取代。
移動此元件並調整其大小。
Component
中的 reshape
x
- 新的水平位置y
- 新的垂直位置w
- 新的寬度h
- 新的高度Component.setBounds(int, int, int, int)
public Rectangle getBounds(Rectangle rv)
rv
中並返回 rv
。如果 rv
為 null
,則分派一個新的 Rectangle
。如果調用者不希望在堆積(heap)空間上分派一個新的 Rectangle
物件,則這種 getBounds
是很有用的。
Component
中的 getBounds
rv
- 返回值,被修改為該元件的邊界
rv
;如果 rv
為 null
,則返回具有此元件邊界的新建 Rectangle
public Dimension getSize(Dimension rv)
rv
中並返回 rv
。如果 rv
為 null
,則分派一個新的 Dimension
物件。如果調用者不希望在堆積(heap)空間上分派一個新的 Dimension
物件,則這種 getSize
是很有用的。
Component
中的 getSize
rv
- 返回值,被修改為該元件的大小
rv
public Point getLocation(Point rv)
rv
中並返回 rv
。如果 rv
為 null
,則分派一個新的 Point
。如果調用者不希望在堆積(heap)空間上分派一個新的 Point
物件,則這種 getLocation
是很有用的。
Component
中的 getLocation
rv
- 返回值,被修改為該元件的位置
rv
public int getX()
component.getBounds().x
或 component.getLocation().x
,因為它不會導致任何堆積(heap)空間分派。
Component
中的 getX
public int getY()
component.getBounds().y
或 component.getLocation().y
,因為它不會導致任何堆積(heap)空間分派。
Component
中的 getY
public int getWidth()
component.getBounds().width
或 component.getSize().width
,因為它不會導致任何堆積(heap)空間分派。
Component
中的 getWidth
public int getHeight()
component.getBounds().height
或 component.getSize().height
,因為它不會導致任何堆積(heap)空間分派。
Component
中的 getHeight
public boolean isOpaque()
不透明元件將每個像素繪製在其矩形邊界內。透明的元件則僅繪製部分像素或者不繪製任何像素,允許其底層像素“透視出來”。因此,沒有完全繪製其像素的元件則提供了一定程度的透明度。
保證總是完全繪製其內容的子類別應該覆寫此方法並返回 true。
Component
中的 isOpaque
setOpaque(boolean)
public void setOpaque(boolean isOpaque)
對於 JComponent
而言,此屬性的預設值是 false。但是對於大多數標準的 JComponent
子類別(如 JButton
和 JTree
),此屬性的預設值與外觀有關。
isOpaque
- 如果此元件應該是不透明的,則為 trueisOpaque()
public void computeVisibleRect(Rectangle visibleRect)
Component
的“可見 rect 矩形”,即此元件及其所有祖先的可見矩形的交集。返回值存儲在 visibleRect
中。
visibleRect
- 根據此元件及其所有祖先的所有可見矩形交集而計算出的 Rectangle
,這是此方法的返回值getVisibleRect()
public Rectangle getVisibleRect()
Component
的“可見矩形”,即此元件的可見矩形 new Rectangle(0, 0, getWidth(), getHeight())
及其所有祖先的可見矩形的交集。
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Component
中的 firePropertyChange
propertyName
- 其值已更改的屬性oldValue
- 該屬性以前的值newValue
- 該屬性的新值public void firePropertyChange(String propertyName, int oldValue, int newValue)
Component
中的 firePropertyChange
propertyName
- 其值已更改的屬性oldValue
- 該屬性以前的值newValue
- 該屬性的新值public void firePropertyChange(String propertyName, char oldValue, char newValue)
Component
複製的描述
Component
中的 firePropertyChange
propertyName
- 已改變的屬性的程式名稱oldValue
- 該屬性的舊值(char 型別)newValue
- 該屬性的新值(char 型別)Component.firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)
protected void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoException
VetoableChangeListener
發送相應的 PropertyChangeEvent
時可以調用此方法。
propertyName
- 對其進行偵聽的屬性名稱oldValue
- 該屬性的舊值newValue
- 該屬性的新值
PropertyVetoException
- 如果元件禁止設置該屬性public void addVetoableChangeListener(VetoableChangeListener listener)
VetoableChangeListener
。為所有屬性註冊該偵聽器。
listener
- 要添加的 VetoableChangeListener
public void removeVetoableChangeListener(VetoableChangeListener listener)
VetoableChangeListener
。此方法移除了一個為所有屬性註冊的 VetoableChangeListener
。
listener
- 要移除的 VetoableChangeListener
public VetoableChangeListener[] getVetoableChangeListeners()
VetoableChangeListener
;如果當前沒有註冊任何可否決更改偵聽器,則返回一個空陣列addVetoableChangeListener(java.beans.VetoableChangeListener)
,
removeVetoableChangeListener(java.beans.VetoableChangeListener)
public Container getTopLevelAncestor()
Window
或 Applet
);如果尚未將此元件添加到任意容器中,則返回 null
。
Container
;如果不在任何容器中,則返回 null
public void addAncestorListener(AncestorListener listener)
listener
,從而當元件或其任意祖先移動,或者變得可見或不可見時該偵聽器將收到 AncestorEvent
。從套件含層次結構中添加或移除元件或其祖先時,也發送這些事件。
listener
- 要註冊的 AncestorListener
AncestorEvent
public void removeAncestorListener(AncestorListener listener)
listener
,使其不再接收 AncestorEvent
。
listener
- 要移除的 AncestorListener
addAncestorListener(javax.swing.event.AncestorListener)
public AncestorListener[] getAncestorListeners()
AncestorListener
;如果當前沒有註冊任何祖先偵聽器,則返回一個空陣列addAncestorListener(javax.swing.event.AncestorListener)
,
removeAncestorListener(javax.swing.event.AncestorListener)
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
JComponent
上註冊為 FooListener
的所有物件所組成的陣列。FooListener
是使用 addFooListener
方法註冊的。
可以使用 class 文字值來指定 listenerType
參數,如 FooListener.class
。例如,可以使用以下程式碼來查詢 JComponent
c
的鼠標偵聽器:
MouseListener[] mls = (MouseListener[])(c.getListeners(MouseListener.class));如果不存在這樣的偵聽器,則此方法將返回一個空陣列。
Container
中的 getListeners
listenerType
- 所請求的偵聽器的型別;此參數應該指定一個從 java.util.EventListener
繼承的介面
FooListener
的所有物件所組成的陣列;如果尚未添加這樣的偵聽器,則返回一個空陣列
ClassCastException
- 如果 listenerType
未指定一個實作 java.util.EventListener
的類別或介面getVetoableChangeListeners()
,
getAncestorListeners()
public void addNotify()
KeyboardAction
事件偵聽器設置父元件鏈。
Container
中的 addNotify
registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)
public void removeNotify()
KeyboardAction
。
Container
中的 removeNotify
registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)
public void repaint(long tm, int x, int y, int width, int height)
Component
中的 repaint
tm
- 不使用此參數x
- 髒區的 x 值y
- 髒區的 y 值width
- 髒區的寬度height
- 髒區的高度Component.isShowing()
,
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)
public void repaint(Rectangle r)
r
- 套件含髒區的 Rectangle
Component.isShowing()
,
RepaintManager.addDirtyRegion(javax.swing.JComponent, int, int, int, int)
public void revalidate()
調用 invalidate
並將此元件的 validateRoot
添加到需要驗證的元件列表中。指派完當前所有未完成的事件後進行驗證。換句話說,調用此方法後,將驗證瀏覽此元件的套件含層次結構時找到的第一個 validateRoot(如果有)。預設情況下,對 JRootPane
、JScrollPane
和 JTextField
調用 isValidateRoot
返回 true。
當屬性值更改,從而影響此元件的大小、位置或內部佈局時,就對此元件自動調用此方法。這種自動更新不同於 AWT,因為通常來說,程序不再需要調用 validate
來獲得要更新的 GUI 的內容。
Component.invalidate()
,
Container.validate()
,
isValidateRoot()
,
RepaintManager.addInvalidComponent(javax.swing.JComponent)
public boolean isValidateRoot()
revalidate
將導致從此根開始對整棵階層樹進行驗證。預設情況下返回 false。JScrollPane
覆寫此方法並返回 true。
revalidate()
,
Component.invalidate()
,
Container.validate()
public boolean isOptimizedDrawingEnabled()
JComponent
子類別(如 JLayeredPane
)應該覆寫此方法以返回 false。
public void paintImmediately(int x, int y, int w, int h)
極少需要調用此方法。在大多數情況下,調用 repaint 更為高效,repaint 會推遲實際的繪製並將多餘的請求壓縮為單個 paint 調用。如果需要在指派當前事件的同時更新顯示,則此方法很有用。
x
- 要繪製區域的 x 值y
- 要繪製區域的 y 值w
- 要繪製區域的寬度h
- 要繪製區域的高度repaint(long, int, int, int, int)
public void paintImmediately(Rectangle r)
r
- 套件含要繪製區域的 Rectangle
public void setDoubleBuffered(boolean aFlag)
Component
,並且還緩衝了它的某個祖先,則將使用該祖先緩衝區。
aFlag
- 如果為 true,則設置此元件使用雙緩衝區進行緩衝public boolean isDoubleBuffered()
Component
中的 isDoubleBuffered
public JRootPane getRootPane()
JRootPane
祖先。
JRootPane
;如果未找到 JRootPane
,則為 null
protected String paramString()
JComponent
的字元串表示形式。此方法僅在除錯時使用,對於各個實作,所返回字元串的內容和格式可能有所不同。返回的字元串可以為空,但不可以為 null
。
Container
中的 paramString
JComponent
的字元串表示形式
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。