Package net.jalbum.component
Class JImageComponent
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
net.jalbum.component.JImageComponent
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
Image component allowing image to be presented at different zoom levels
Intended to installed inside a JZoomScrollPane. Paints image centered and
respecting aspect ratio (Attempt to handle layout by parent component failed
- caused jerky zooming) Use getImageBounds() to get bounds of image relative
to this component Supports quick presentation of low-res image and
lazy-loading of full size image via setImageProvider method
- Since:
- 16.3
- See Also:
-
Nested Class Summary
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
Modifier and TypeFieldDescriptionfinal javafx.beans.property.BooleanProperty
Tells whether this component is loading images in the background.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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
changeZoomLevel
(double delta) getImage()
Get current image bounds (the bounds the image is currently zoomed at) Top-left corner is usually (0,0), but not when close to fully zoomed out, unless component and image has the same aspect ratio.Get current image size (the size the image is currently zoomed at)double
boolean
boolean
protected void
paintComponent
(Graphics graphics) void
replaceImage
(Image fullSizeImage) Replace image with full-sized version of same image.void
scheduleReload
(Dimension newDim) Trigger background reloading of current image Needs image provider to be installedvoid
setImage
(BufferedImage image) void
Set usually smaller image, and inform component of lazy-loaded full sized image's dimensionssetImageAsync
(JImageComponent.ImageProvider imageProvider, Dimension fullSize) Same as setImage(Image image, Dimension fullSize) but asynchronousvoid
Install provider for larger (normally uncached) images, loaded as user zooms in (Loaded in background thread so is allowed to take some time)void
setScaleToMaxSize
(boolean scaleToMaxSize) void
setZoomLevel
(double zoomLevel) Sets the zoom level.double
toZoomFactor
(double zoomLevel) void
Zoom out so entire image fits within parent ViewportMethods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, 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, 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, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, 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
-
workingProperty
public final javafx.beans.property.BooleanProperty workingPropertyTells whether this component is loading images in the background. Bind to JProgressSpinner via JProgessSpinner.setModel()
-
-
Constructor Details
-
JImageComponent
public JImageComponent()Create empty image component -
JImageComponent
-
-
Method Details
-
getImage
-
setImage
- Parameters:
image
- to set. Pass null to clear
-
setImage
Set usually smaller image, and inform component of lazy-loaded full sized image's dimensions- Parameters:
image
-fullSize
-
-
setImageAsync
Same as setImage(Image image, Dimension fullSize) but asynchronous -
setImageProvider
Install provider for larger (normally uncached) images, loaded as user zooms in (Loaded in background thread so is allowed to take some time)- Parameters:
provider
-- Since:
- 16.3
-
scheduleReload
Trigger background reloading of current image Needs image provider to be installed- Parameters:
newDim
- Bounding box for new image dimension
-
replaceImage
Replace image with full-sized version of same image. Do nothing else than repaint API users should preferably use setImageProvider instead and let this component do lazy loading- Parameters:
fullSizeImage
-
-
getPreferredSize
- Overrides:
getPreferredSize
in classJComponent
-
isScaleToMaxSize
public boolean isScaleToMaxSize() -
setScaleToMaxSize
public void setScaleToMaxSize(boolean scaleToMaxSize) -
paintComponent
- Overrides:
paintComponent
in classJComponent
-
isZoomeable
public boolean isZoomeable() -
zoomToMin
public void zoomToMin()Zoom out so entire image fits within parent Viewport -
getZoomLevel
public double getZoomLevel()- Returns:
- Zoom level. 0 == zoomed out fully (full image showing) 1 == 1:1
-
setZoomLevel
public void setZoomLevel(double zoomLevel) Sets the zoom level. 0 == zoomed out fully (full image showing) 1 == 1:1- Parameters:
zoomLevel
-
-
changeZoomLevel
public void changeZoomLevel(double delta) -
toZoomFactor
public double toZoomFactor(double zoomLevel) -
getImageSize
Get current image size (the size the image is currently zoomed at)- Returns:
- See Also:
-
getImageBounds
Get current image bounds (the bounds the image is currently zoomed at) Top-left corner is usually (0,0), but not when close to fully zoomed out, unless component and image has the same aspect ratio.- Returns:
-