Package com.formdev.flatlaf.ui
Class FlatTitlePane
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
com.formdev.flatlaf.ui.FlatTitlePane
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
Provides the Flat LaF title bar.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected class
protected class
protected class
static interface
For custom components useFlatClientProperties.COMPONENT_TITLE_BAR_CAPTION
instead of this interface.Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Color
protected final Color
protected final Color
protected final int
protected final int
protected JPanel
protected final boolean
protected final boolean
protected JButton
private Rectangle
private Rectangle
private Rectangle
private Rectangle
private int
protected final Color
private final FlatTitlePane.Handler
protected JButton
protected JLabel
protected final Dimension
protected final Color
protected final Color
private static final boolean
(package private) static final String
private boolean
private long
private int
private int
private int
protected JPanel
protected JButton
protected JComponent
protected final int
protected final int
(package private) final JPanel
This panel handles mouse events if FlatLaf window decorations are used without native window border.protected final int
protected JButton
protected final JRootPane
protected final boolean
protected final boolean
protected final boolean
protected final Font
protected JLabel
protected final int
protected Window
protected final String
(package private) final JPanel
This panel paint a border at the top of the window in fullWindowContent mode, if FlatLaf window decorations are enabled.Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
activeChanged
(boolean active) void
protected void
private Rectangle
private boolean
captionHitTest
(Point pt) Returns whether there is a component at the given location, that processes mouse events.protected void
close()
Closes the window.protected JButton
createButton
(String iconKey, String accessibleName, ActionListener action) protected void
protected FlatTitlePane.Handler
protected FlatTitlePane.FlatTitlePaneBorder
private void
debugPaintComponentWithMouseListener
(Graphics g, Color color, Component c, int x, int y) private void
debugPaintRect
(Graphics g, Color color, Rectangle r) protected Component
findHorizontalGlue
(JMenuBar menuBar) protected void
protected Rectangle
protected String
protected boolean
Returns whether windows uses native window border and has custom decorations enabled.protected boolean
hasVisibleEmbeddedMenuBar
(JMenuBar menuBar) Returns whether this title pane currently has a visible and embedded menubar.protected void
iconify()
Iconifies the window.protected void
protected boolean
private boolean
Frame.setMaximizedBounds() behaves different on some Java versions after issues https://bugs.openjdk.java.net/browse/JDK-8231564 and https://bugs.openjdk.java.net/browse/JDK-8176359 (see also https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8176359) were fixed in Java 15 and backported to 11.0.8 and 13.0.4.protected boolean
Returns whether the menubar should be embedded into the title pane.private boolean
isTitleBarCaptionAt
(Component c, int x, int y) protected boolean
(package private) boolean
protected void
maximize()
Maximizes the window.private void
protected void
(package private) void
protected void
void
protected void
void
protected void
protected void
restore()
Restores the window size.protected void
protected void
(package private) void
protected void
protected void
protected void
protected void
protected void
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
KEY_DEBUG_SHOW_RECTANGLES
- See Also:
-
isWindows_10
private static final boolean isWindows_10 -
titleFont
- Since:
- 2.5
-
activeBackground
-
inactiveBackground
-
activeForeground
-
inactiveForeground
-
embeddedForeground
-
borderColor
-
showIcon
protected final boolean showIcon- Since:
- 2
-
showIconInDialogs
protected final boolean showIconInDialogs- Since:
- 2.5
-
noIconLeftGap
protected final int noIconLeftGap- Since:
- 2
-
iconSize
-
titleMinimumWidth
protected final int titleMinimumWidth- Since:
- 2.4
-
buttonMinimumWidth
protected final int buttonMinimumWidth- Since:
- 2.4
-
buttonMaximizedHeight
protected final int buttonMaximizedHeight -
centerTitle
protected final boolean centerTitle -
centerTitleIfMenuBarEmbedded
protected final boolean centerTitleIfMenuBarEmbedded -
showIconBesideTitle
protected final boolean showIconBesideTitle- Since:
- 2.4
-
rootPane
-
windowStyle
-
leftPanel
-
iconLabel
-
titleLabel
-
buttonPanel
-
iconifyButton
-
maximizeButton
-
restoreButton
-
closeButton
-
window
-
handler
-
mouseLayer
This panel handles mouse events if FlatLaf window decorations are used without native window border. E.g. on Linux.This panel usually has same bounds as the title pane, except if fullWindowContent mode is enabled.
This panel is not a child of the title pane. Instead it is added by FlatRootPaneUI to the layered pane at a layer under the title pane and under the frame content. The separation is necessary for fullWindowContent mode, where the title pane is layered over the frame content (for title pane buttons), but the mousePanel needs to be layered under the frame content so that components on content pane can receive mouse events when located in title area.
-
windowTopBorderLayer
This panel paint a border at the top of the window in fullWindowContent mode, if FlatLaf window decorations are enabled. Only used on Windows 10.This panel is not a child of the title pane. Instead it is added by FlatRootPaneUI to the layered pane at a layer over all other layers.
-
laterCounter
private int laterCounter -
lastCaptionHitTestX
private int lastCaptionHitTestX -
lastCaptionHitTestY
private int lastCaptionHitTestY -
lastCaptionHitTestTime
private long lastCaptionHitTestTime -
lastCaptionHitTestResult
private boolean lastCaptionHitTestResult -
debugTitleBarHeight
private int debugTitleBarHeight -
debugAppIconBounds
-
debugMinimizeButtonBounds
-
debugMaximizeButtonBounds
-
debugCloseButtonBounds
-
-
Constructor Details
-
FlatTitlePane
-
-
Method Details
-
createTitlePaneBorder
-
createHandler
-
addSubComponents
protected void addSubComponents() -
createButtons
protected void createButtons() -
createButton
-
activeChanged
protected void activeChanged(boolean active) -
frameStateChanged
protected void frameStateChanged() -
updateVisibility
protected void updateVisibility()- Since:
- 3
-
updateIcon
protected void updateIcon() -
updateFullWindowContentButtonsBoundsProperty
void updateFullWindowContentButtonsBoundsProperty() -
addNotify
public void addNotify()- Overrides:
addNotify
in classJComponent
-
removeNotify
public void removeNotify()- Overrides:
removeNotify
in classJComponent
-
getWindowTitle
-
installWindowListeners
protected void installWindowListeners() -
uninstallWindowListeners
protected void uninstallWindowListeners() -
isFullWindowContent
protected boolean isFullWindowContent()- Since:
- 3.4
-
hasVisibleEmbeddedMenuBar
Returns whether this title pane currently has a visible and embedded menubar. -
isMenuBarEmbedded
protected boolean isMenuBarEmbedded()Returns whether the menubar should be embedded into the title pane. -
getMenuBarBounds
-
findHorizontalGlue
-
titleBarColorsChanged
protected void titleBarColorsChanged() -
paint
- Overrides:
paint
in classJComponent
-
debugPaintComponentWithMouseListener
-
debugPaintRect
-
paintComponent
- Overrides:
paintComponent
in classJComponent
-
repaintWindowBorder
protected void repaintWindowBorder() -
iconify
protected void iconify()Iconifies the window. -
isWindowMaximized
protected boolean isWindowMaximized()- Since:
- 2.4
-
maximize
protected void maximize()Maximizes the window. -
updateMaximizedBounds
protected void updateMaximizedBounds() -
isMaximizedBoundsFixed
private boolean isMaximizedBoundsFixed()Frame.setMaximizedBounds() behaves different on some Java versions after issues https://bugs.openjdk.java.net/browse/JDK-8231564 and https://bugs.openjdk.java.net/browse/JDK-8176359 (see also https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8176359) were fixed in Java 15 and backported to 11.0.8 and 13.0.4. -
restore
protected void restore()Restores the window size. -
maximizeOrRestore
private void maximizeOrRestore() -
close
protected void close()Closes the window. -
hasNativeCustomDecoration
protected boolean hasNativeCustomDecoration()Returns whether windows uses native window border and has custom decorations enabled. -
isWindowTopBorderNeeded
boolean isWindowTopBorderNeeded() -
updateNativeTitleBarHeightAndHitTestSpotsLater
protected void updateNativeTitleBarHeightAndHitTestSpotsLater() -
updateNativeTitleBarHeightAndHitTestSpots
protected void updateNativeTitleBarHeightAndHitTestSpots() -
boundsInWindow
-
captionHitTest
Returns whether there is a component at the given location, that processes mouse events. E.g. buttons, menus, etc.Note:
- This method is invoked often when mouse is moved over title bar and should therefore return quickly.
- This method is invoked on 'AWT-Windows' thread (not 'AWT-EventQueue' thread) while processing Windows messages.
-
isTitleBarCaptionAt
-