Class Component
- All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable
Component.- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final floatstatic final floatprotected static final StringTranslucent chrome tint, for strips that read as raised against the page.protected static final StringOpaque surface fill — Metal's flatcontrol/window.static final floatprotected final EventListenerListstatic final floatstatic final floatFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanDeprecated.voidvoidvoidRegisters the listener and, on the first one, subscribes to the peer's focus/blur events soFOCUS_GAINED/FOCUS_LOSTactually arrive (installFocusBridge()).voidvoidvoidvoidvoidRegisters the listener and, on the first one, subscribes to the peer's DOM mouse events so all five callbacks actually arrive (installMouseBridge()).voidStores the listener;mouseMoved/mouseDraggednever fire.voidStores the listener;mouseWheelMovednever fires.voidvoidvoidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) protected voidPush the current background to the peer, per D_theme_is_lookandfeel's three-way rule.voidapplyComponentOrientation(ComponentOrientation orientation) protected voidapplyVisibleToPeer(boolean b) booleanareFocusTraversalKeysSet(int id) protected final <T extends EventListener>
T[]awtListeners(Class<T> type) The stored listeners oftypein AWT dispatch order — first-registered-first, which is the reverse of whatEventListenerListyields.bounds()intcheckImage(Image image, int width, int height, ImageObserver observer) intcheckImage(Image image, ImageObserver observer) protected AWTEventcoalesceEvents(AWTEvent existingEvent, AWTEvent newEvent) booleancontains(int x, int y) booleancreateImage(int width, int height) createImage(ImageProducer producer) createVolatileImage(int width, int height) createVolatileImage(int width, int height, ImageCapabilities caps) protected StringWhich SB-Emulators-supplied fill this component takes when its background is an L&F default, ornullwhen it needs none.voidDeprecated.voiddisable()protected final voiddisableEvents(long eventsToDisable) WARNs whereenableEvents(long)no-ops, and the asymmetry is the point: unconditional dispatch grants every *enable* request and honours no *disable* one.final voidvoiddoLayout()voidenable()voidenable(boolean b) protected final voidenableEvents(long eventsToEnable) Deliberate no-op: every mask this could enable is already enabled.voidenableInputMethods(boolean enable) protected voidfireComponentEvent(int id) protected voidfireHierarchyEvent(int id, Component changed, Container changedParent, long flags) Fires aHierarchyEventon this component.protected voidfirePropertyChange(String propertyName, boolean oldValue, boolean newValue) voidfirePropertyChange(String propertyName, byte oldValue, byte newValue) voidfirePropertyChange(String propertyName, char oldValue, char newValue) voidfirePropertyChange(String propertyName, double oldValue, double newValue) voidfirePropertyChange(String propertyName, float oldValue, float newValue) protected voidfirePropertyChange(String propertyName, int oldValue, int newValue) voidfirePropertyChange(String propertyName, long oldValue, long newValue) voidfirePropertyChange(String propertyName, short oldValue, short newValue) protected voidfirePropertyChange(String propertyName, Object oldValue, Object newValue) floatfloatintgetBaseline(int width, int height) getComponentAt(int x, int y) getFocusTraversalKeys(int id) booleangetFont()getFontMetrics(Font font) intboolean<T extends EventListener>
T[]getListeners(Class<T> listenerType) getLocation(Point rv) getName()final com.vaadin.flow.component.ComponentgetPeer()The Vaadin component backing this emulator — the only way to reach it, from inside SB-Emulators and out.getPropertyChangeListeners(String propertyName) getSize()final ObjectintgetWidth()intgetX()intgetY()booleanDeprecated.booleanhandleEvent(Event evt) Deprecated.booleanhasFocus()Same answer asisFocusOwner().voidhide()booleanimageUpdate(Image img, int infoflags, int x, int y, int w, int h) booleaninside(int x, int y) voidbooleanbooleanbooleanbooleanbooleanbooleanbooleanisFocusCycleRoot(Container container) booleanbooleanDeprecated.booleanbooleanbooleanbooleanbooleanbooleanisOpaque()booleanbooleanprotected static booleanWhethercis a colour the theme owns rather than one the app asked for — the discriminator of D_theme_is_lookandfeel.booleanisValid()booleanbooleanDeprecated.booleanDeprecated.voidlayout()voidlist()voidlist(PrintStream out) voidlist(PrintStream out, int indent) voidlist(PrintWriter out) voidlist(PrintWriter out, int indent) locate(int x, int y) location()booleanDeprecated.booleanDeprecated.booleanDeprecated.booleanmouseEnter(Event evt, int x, int y) Deprecated.booleanDeprecated.booleanDeprecated.booleanDeprecated.voidmove(int x, int y) voidDeprecated.voidvoidprotected StringbooleanDeprecated.booleanprepareImage(Image image, int width, int height, ImageObserver observer) booleanprepareImage(Image image, ImageObserver observer) voidvoidprotected voidprotected voidprotected voidprotected voidprotected voidprotected voidprotected voidprotected voidprotected voidprotected voidvoidremove(MenuComponent popup) voidvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) voidrepaint()voidrepaint(int x, int y, int width, int height) voidrepaint(long tm) voidrepaint(long tm, int x, int y, int width, int height) voidprotected booleanrequestFocus(boolean temporary) The legacy "temporary focus" overload.booleanprotected booleanrequestFocusInWindow(boolean temporary) voidreshape(int x, int y, int width, int height) voidresize(int width, int height) voidvoidvoidvoidsetBounds(int x, int y, int width, int height) voidvoidvoidvoidThe low-leveljava.awt.dndpath is declined whole (D_dnd_transferhandler_only) — SB-Emulators' drag-and-drop runs throughvaadinx.swing.TransferHandler— so what a stored target buys is its own getter, and nothing more.voidsetEnabled(boolean b) voidsetFocusable(boolean focusable) Stores the flag, fires AWT's"focusable"PCE, and thereby takes this component out of (or back into) focus traversal.voidsetFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) voidsetFocusTraversalKeysEnabled(boolean focusTraversalKeysEnabled) Stores the flag and fires"focusTraversalKeysEnabled"; Tab is not intercepted either way.voidvoidvoidsetIgnoreRepaint(boolean ignoreRepaint) voidvoidsetLocation(int x, int y) voidsetLocation(Point p) voidsetMaximumSize(Dimension maximumSize) voidsetMinimumSize(Dimension minimumSize) voidsetMixingCutoutShape(Shape shape) voidvoidsetPreferredSize(Dimension preferredSize) voidsetSize(int width, int height) voidvoidsetVisible(boolean b) voidshow()voidshow(boolean b) size()protected final voidDeclares that this subclass sources its ownMOUSE_*events, soinstallMouseBridge()must stay out of the way.toString()voidMoves focus to the next focusable component, exactly as AWT does: by asking the currentKeyboardFocusManager.voidvoidvoidvoidvalidate()final voidRunsbodyagainst this component's peer, under its session's lock and with the UI holding the peer current — the seam every emulator peer write goes through, since any of them may arrive from a background thread (R_tolerate_off_ui_thread).protected final voidwithPeerOnLiveUI(boolean callerPlansToBlockAfterwards, Consumer<com.vaadin.flow.component.Component> body) Runsbodyagainst this component's peer on the session's live UI, taking the session off this thread'sEmulatorContext: the variant ofwithPeer(Consumer)for a body that needs a current UI even while the peer is detached.
-
Field Details
-
TOP_ALIGNMENT
public static final float TOP_ALIGNMENT- See Also:
-
CENTER_ALIGNMENT
public static final float CENTER_ALIGNMENT- See Also:
-
BOTTOM_ALIGNMENT
public static final float BOTTOM_ALIGNMENT- See Also:
-
LEFT_ALIGNMENT
public static final float LEFT_ALIGNMENT- See Also:
-
RIGHT_ALIGNMENT
public static final float RIGHT_ALIGNMENT- See Also:
-
listenerList
-
FILL_DEFAULT
Opaque surface fill — Metal's flatcontrol/window.- See Also:
-
FILL_CHROME
Translucent chrome tint, for strips that read as raised against the page.- See Also:
-
-
Constructor Details
-
Component
protected Component() -
Component
protected Component(com.vaadin.flow.component.Component peer)
-
-
Method Details
-
getPeer
public final com.vaadin.flow.component.Component getPeer()The Vaadin component backing this emulator — the only way to reach it, from inside SB-Emulators and out. Thepeerconcept is already a public architectural seam (per CLAUDE.md / architecture.md): Karibu reaches it, tests assert on it, and a migrator drops an emulator into a vanilla Vaadin layout through it.It is also the emulator→peer chokepoint
EHelper.checkUIThread()hangs off: every route through this accessor reports, once per JVM, if it is running off the Vaadin UI thread. Behaviour is unchanged — the check only logs — but it is whypeeris private rather thanprotected, which is what makes the chokepoint hold for emulator methods not yet written.Two call sites inside this class deliberately read the field instead: the constructor, since construction off the UI thread is tolerated, and
toString(), since logging a component must never itself warn. -
withPeer
Runsbodyagainst this component's peer, under its session's lock and with the UI holding the peer current — the seam every emulator peer write goes through, since any of them may arrive from a background thread (R_tolerate_off_ui_thread). Synchronous: the body has run by the time this returns. Inline when a UI is already current, and when the peer has no session yet, which means it has never been attached and has no lock to take. SeeSHelper.runOnSession(VaadinSession, Component, Runnable)(D_attach_aware_hop).Public because code outside the component hierarchy needs it too — a layout manager, the drag-and-drop wiring, and a migrator's own worker that wants to touch the peer safely.
Why this and not
getPeer(). A thread hop has to wrap the mutation, and an accessor returns before the mutation happens: a hoppinggetPeer()would take the lock, hand back the peer, release, and let the caller mutate off-thread anyway. SogetPeer()can never carry a threading strategy and this can — which is the whole reason the two exist side by side. Reads stay ongetPeer(), where a hop would buy nothing.Wrap one Swing method's worth of peer work per call, not one DOM write: each call is its own trip through the seam, so a body setting three styles belongs in one
withPeerrather than three. Nested calls are free.A body that needs a current UI even while the peer is detached — one that registers a resource URL, or shows a window — goes through
withPeerOnLiveUI(boolean, Consumer)instead. -
withPeerOnLiveUI
protected final void withPeerOnLiveUI(boolean callerPlansToBlockAfterwards, Consumer<com.vaadin.flow.component.Component> body) Runsbodyagainst this component's peer on the session's live UI, taking the session off this thread'sEmulatorContext: the variant ofwithPeer(Consumer)for a body that needs a current UI even while the peer is detached. AnImageIconbecoming a VaadinImageis the measured case, since the image's ctor resolves a resource URL. SeeEHelper.runInUIThread(boolean, Runnable).- Parameters:
callerPlansToBlockAfterwards-trueonly for a modal show, which waits for a browser answer once the body has run and so cannot degrade — it would park forever. Passed straight through; seeEHelper.runInUIThread(boolean, Runnable)for what it decides.- Throws:
IllegalStateException- off the UI thread, on a thread with noEmulatorContext(R_match_swing_errors case (7))
-
awtListeners
The stored listeners oftypein AWT dispatch order — first-registered-first, which is the reverse of whatEventListenerListyields.- Type Parameters:
T- an AWT listener type. Swing listener types must not come through here:AWTEventMulticasterdispatches first-registered-first while Swing's list is last-first, and each convention is correct for its own half of the JDK.- Returns:
- a fresh array, reversed in place; iterate it rather than re-reading the list, so in-dispatch listener mutation stays safe
-
getName
-
remove
- Specified by:
removein interfaceMenuContainer
-
size
-
toString
-
update
-
add
-
contains
-
contains
public boolean contains(int x, int y) -
list
public void list() -
list
-
list
-
list
-
list
-
getBounds
-
getBounds
-
validate
public void validate() -
bounds
-
location
-
getLocation
-
getLocation
-
getParent
-
isEnabled
public boolean isEnabled() -
setName
-
print
-
action
Deprecated. -
getSize
-
getSize
-
paramString
-
isOpaque
public boolean isOpaque() -
resize
-
resize
public void resize(int width, int height) -
enable
public void enable() -
enable
public void enable(boolean b) -
invalidate
public void invalidate() -
isValid
public boolean isValid() -
move
public void move(int x, int y) -
getLocale
-
setLocale
-
setSize
-
setSize
public void setSize(int width, int height) -
getTreeLock
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
firePropertyChange
-
removeNotify
public void removeNotify() -
addNotify
public void addNotify() -
getToolkit
-
setLocation
public void setLocation(int x, int y) -
setLocation
-
getLocationOnScreen
-
isShowing
public boolean isShowing() -
setEnabled
public void setEnabled(boolean b) -
disable
public void disable() -
isFocusOwner
public boolean isFocusOwner() -
isLightweight
public boolean isLightweight() -
transferFocus
public void transferFocus()Moves focus to the next focusable component, exactly as AWT does: by asking the currentKeyboardFocusManager. The traversal order and its divergences are documented onKeyboardFocusManager.focusNextComponent(Component). -
getInputContext
-
dispatchEvent
-
setVisible
public void setVisible(boolean b) -
show
public void show(boolean b) -
show
public void show() -
applyVisibleToPeer
protected void applyVisibleToPeer(boolean b) Where the JDK callspeer.setVisible(...)fromshow()/hide(). Split out because a Window's peer is not simply shown and hidden — it is attached to a route or opened as an overlay — soWindowsubstitutes its own peer work here rather than duplicating the surrounding state machine.Every Vaadin Component has
setVisible, so noHasVisiblecheck is needed (unlikesetEnabled), and Vaadin'sfalseremoves the element from the DOM — which is Swing's "invisible component takes no space" contract. -
repaint
public void repaint(int x, int y, int width, int height) -
repaint
public void repaint() -
repaint
public void repaint(long tm) -
repaint
public void repaint(long tm, int x, int y, int width, int height) -
postEvent
Deprecated.- Specified by:
postEventin interfaceMenuContainer
-
hide
public void hide() -
getForeground
-
setForeground
-
isThemeDefault
Whethercis a colour the theme owns rather than one the app asked for — the discriminator of D_theme_is_lookandfeel.Two kinds qualify, and both are the JDK's own vocabulary for "this is a default":
UIResource— what a L&F installs, and whatLookAndFeel.installColorsAndFontis willing to overwrite.SystemColor— the AWT-era spelling of the same idea. It needs naming separately because it isfinaland cannot implement the marker, sojavacrejects aninstanceof UIResourcetest against it outright.
Deliberately not value-equality against the table: a
ColorUIResourceequalsa plainColorof the same RGB, so comparing values cannot tell a default from a migrator who really did ask for#EEEEEE. The marker can. -
getBackground
-
setBackground
-
applyBackgroundToPeer
protected void applyBackgroundToPeer()Push the current background to the peer, per D_theme_is_lookandfeel's three-way rule. Split out ofsetBackground(Color)becausesetOpaquehas to re-run exactly this decision: the gate is two-directional, so neither setter can be the only one that evaluates it.An app-set colour is written inline, which is what makes it outrank the theme — the CSS cascade is the priority mechanism, so no precedence machinery of our own is needed. A theme default writes nothing here; the class-based default fill is a separate concern.
-
defaultFillCssClass
Which SB-Emulators-supplied fill this component takes when its background is an L&F default, ornullwhen it needs none.The answer is a property of the peer, not a list of class names, so a new emulator inherits the right behaviour from the element it peers on with nobody having to remember to add it:
HtmlContaineris Flow's base for plain HTML elements that paint nothing of their own, so those fill; a themedvaadin-*widget paints its own surface and needs no default.Two peers escape the predicate and are named here rather than left to be rediscovered.
Scrolleris not anHtmlContainerbut is a transparent overflow container, and bothJScrollPaneandjava.awt.ScrollPaneare opaque under Metal.MenuBarthe predicate would exempt, but its host computes to fully transparent — so a Swing menu bar would lose its chrome entirely — and it reads as a raised strip rather than as page surface, hence the chrome tint.Filling an inert peer — a
JViewport, aJScrollBar, a menu item's bookkeepingSpan— needs no exemption: the element is never rendered, so the fill is a no-op. -
getFont
- Specified by:
getFontin interfaceMenuContainer
-
setFont
-
getColorModel
-
setBounds
-
setBounds
public void setBounds(int x, int y, int width, int height) -
reshape
public void reshape(int x, int y, int width, int height) -
getX
public int getX() -
getY
public int getY() -
getWidth
public int getWidth() -
getHeight
public int getHeight() -
preferredSize
-
isPreferredSizeSet
public boolean isPreferredSizeSet() -
getPreferredSize
-
getMinimumSize
-
minimumSize
-
isMinimumSizeSet
public boolean isMinimumSizeSet() -
isMaximumSizeSet
public boolean isMaximumSizeSet() -
layout
public void layout() -
getGraphics
-
paint
-
isVisible
public boolean isVisible() -
createImage
-
createImage
-
createVolatileImage
public VolatileImage createVolatileImage(int width, int height, ImageCapabilities caps) throws AWTException - Throws:
AWTException
-
createVolatileImage
-
prepareImage
-
prepareImage
-
checkImage
-
checkImage
-
inside
public boolean inside(int x, int y) -
locate
-
getComponentAt
-
getComponentAt
-
processEvent
-
handleEvent
Deprecated. -
getListeners
-
getPropertyChangeListeners
-
getPropertyChangeListeners
-
coalesceEvents
-
fireComponentEvent
protected void fireComponentEvent(int id) -
fireHierarchyEvent
Fires aHierarchyEventon this component. Container overrides to also recurse into descendants — AWT semantics for PARENT_CHANGED / DISPLAYABILITY_CHANGED / SHOWING_CHANGED, where the entire reparented subtree observes the change. -
processComponentEvent
-
processFocusEvent
-
processKeyEvent
-
processMouseEvent
-
processMouseMotionEvent
-
processMouseWheelEvent
-
processInputMethodEvent
-
processHierarchyEvent
-
processHierarchyBoundsEvent
-
mouseEnter
Deprecated. -
mouseExit
Deprecated. -
mouseMove
Deprecated. -
mouseDown
Deprecated. -
mouseDrag
Deprecated. -
mouseUp
Deprecated. -
keyDown
Deprecated. -
keyUp
Deprecated. -
gotFocus
Deprecated. -
lostFocus
Deprecated. -
isFocusTraversable
Deprecated.Deprecated AWT 1.1 predecessor ofisFocusable(); same answer. -
getFocusTraversalKeys
-
requestFocus
public void requestFocus() -
requestFocus
protected boolean requestFocus(boolean temporary) The legacy "temporary focus" overload. Our peers can't distinguish temporary from permanent focus (the browser has no such concept), so this is the no-arg variant.- Returns:
- whether the request reached the peer, not whether the browser accepted it
-
isFocusable
public boolean isFocusable() -
isFocusCycleRoot
-
getFocusCycleRootAncestor
-
nextFocus
-
requestFocusInWindow
public boolean requestFocusInWindow() -
requestFocusInWindow
protected boolean requestFocusInWindow(boolean temporary) -
transferFocusBackward
public void transferFocusBackward() -
hasFocus
public boolean hasFocus()Same answer asisFocusOwner(). AWT's split is about temporary focus loss, which the browser does not model — so a component either owns focus or does not. -
addPropertyChangeListener
-
addPropertyChangeListener
-
removePropertyChangeListener
-
removePropertyChangeListener
-
addComponentListener
-
addFocusListener
Registers the listener and, on the first one, subscribes to the peer's focus/blur events soFOCUS_GAINED/FOCUS_LOSTactually arrive (installFocusBridge()). -
suppressMouseBridge
protected final void suppressMouseBridge()Declares that this subclass sources its ownMOUSE_*events, soinstallMouseBridge()must stay out of the way.Call from the constructor, before any listener can be registered.
For
JList/JTable/JTree, which re-source their surrogate's Grid item-click wire. Those wires are not redundant with this bridge — each reports the clicked row/index, held sorowAtPoint/locationToIndexcan answer during the dispatch (D_jlist, D_jtree) — so they stay, and the generic bridge yields rather than delivering every click twice. -
addKeyListener
-
addMouseListener
Registers the listener and, on the first one, subscribes to the peer's DOM mouse events so all five callbacks actually arrive (installMouseBridge()). -
addMouseMotionListener
Stores the listener;mouseMoved/mouseDraggednever fire.Tracking the pointer needs a
mousemovesubscription, i.e. a server round trip per pixel of travel. Declined as a capability (R_match_swing_errors sub-bucket (b)), and WARNed here at *registration* rather than silently —addMouseListener(MouseListener)'s five callbacks are fully wired, so the honest split falls exactly on the listener-interface boundary. The listener is still stored, sogetMouseMotionListeners()answers truthfully (R_decline_effect_only drops the effect, not the state). -
addInputMethodListener
-
addHierarchyListener
-
addHierarchyBoundsListener
-
addMouseWheelListener
Stores the listener;mouseWheelMovednever fires.Same reasoning and same registration-time WARN as
addMouseMotionListener(MouseMotionListener): a wheel subscription is a round trip per notch, and the browser owns scrolling anyway. -
setComponentOrientation
-
isDisplayable
public boolean isDisplayable() -
getAccessibleContext
-
setDropTarget
The low-leveljava.awt.dndpath is declined whole (D_dnd_transferhandler_only) — SB-Emulators' drag-and-drop runs throughvaadinx.swing.TransferHandler— so what a stored target buys is its own getter, and nothing more. AWT's registration limb is not merely declined but impossible:dt.setComponent(this)wants ajava.awt.Componentand this is not one. -
getDropTarget
-
getGraphicsConfiguration
- Returns:
- the browser viewport's configuration — never null, unlike AWT's, which answers null until the component has a peer
-
getMousePosition
- Throws:
HeadlessException
-
isDoubleBuffered
public boolean isDoubleBuffered() -
enableInputMethods
public void enableInputMethods(boolean enable) -
isForegroundSet
public boolean isForegroundSet() -
isBackgroundSet
public boolean isBackgroundSet() -
isFontSet
public boolean isFontSet() -
setPreferredSize
-
setMinimumSize
-
setMaximumSize
-
getMaximumSize
-
getAlignmentX
public float getAlignmentX() -
getAlignmentY
public float getAlignmentY() -
getBaseline
public int getBaseline(int width, int height) -
doLayout
public void doLayout() -
revalidate
public void revalidate() -
getFontMetrics
-
setCursor
-
getCursor
-
isCursorSet
public boolean isCursorSet() -
paintAll
-
printAll
-
imageUpdate
- Specified by:
imageUpdatein interfaceImageObserver
-
setIgnoreRepaint
public void setIgnoreRepaint(boolean ignoreRepaint) -
getIgnoreRepaint
public boolean getIgnoreRepaint() -
deliverEvent
Deprecated. -
removeComponentListener
-
getComponentListeners
-
removeFocusListener
-
getFocusListeners
-
removeHierarchyListener
-
getHierarchyListeners
-
removeHierarchyBoundsListener
-
getHierarchyBoundsListeners
-
removeKeyListener
-
getKeyListeners
-
removeMouseListener
-
getMouseListeners
-
removeMouseMotionListener
-
getMouseMotionListeners
-
removeMouseWheelListener
-
getMouseWheelListeners
-
removeInputMethodListener
-
getInputMethodListeners
-
getInputMethodRequests
-
enableEvents
protected final void enableEvents(long eventsToEnable) Deliberate no-op: every mask this could enable is already enabled.Not a gap, so not a WARN. AWT's
eventMaskexists to letprocessEvent*skip* a category no one asked for;Window.processEvent(AWTEvent)dispatches unconditionally, which satisfies any request this method could carry. Called fromJFrame.frameInit/JDialog.dialogInitto keep the JDK's call graph (R_no_vaadin_in_api limb 2) — though the edge buys shape rather than reachability,finalbeing unoverridable here as in the JDK. ContrastdisableEvents(long). -
disableEvents
protected final void disableEvents(long eventsToDisable) WARNs whereenableEvents(long)no-ops, and the asymmetry is the point: unconditional dispatch grants every *enable* request and honours no *disable* one. A migrator muting a category here keeps receiving it. -
setFocusable
public void setFocusable(boolean focusable) Stores the flag, fires AWT's"focusable"PCE, and thereby takes this component out of (or back into) focus traversal.Deliberately not pushed to the peer as a
tabindexrewrite — the browser's Tab order stays the browser's, per the traversal-order divergence onKeyboardFocusManager.focusNextComponent(Component). So a non-focusable component is still Tab-reachable in the browser. -
setFocusTraversalKeys
-
areFocusTraversalKeysSet
public boolean areFocusTraversalKeysSet(int id) -
setFocusTraversalKeysEnabled
public void setFocusTraversalKeysEnabled(boolean focusTraversalKeysEnabled) Stores the flag and fires"focusTraversalKeysEnabled"; Tab is not intercepted either way. AWT's traversal keys are consumed inside its key dispatch pipeline, which is permanently out of scope (D_focus_managers) — the browser moves focus on Tab and there is no seam at which to suppress that from the server. State and notification are owed regardless (R_decline_effect_only, D_owed_events). -
getFocusTraversalKeysEnabled
public boolean getFocusTraversalKeysEnabled()- Returns:
- what
setFocusTraversalKeysEnabled(boolean)stored; AWT's default istrue
-
transferFocusUpCycle
public void transferFocusUpCycle() -
getComponentOrientation
-
applyComponentOrientation
-
setMixingCutoutShape
-