Package de.stefanreiser.swing.text
Class TextLineNumber
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
de.stefanreiser.swing.text.TextLineNumber
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.beans.PropertyChangeListener
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.CaretListener
,javax.swing.event.DocumentListener
public class TextLineNumber
extends javax.swing.JPanel
implements javax.swing.event.CaretListener, javax.swing.event.DocumentListener, java.beans.PropertyChangeListener
This class will display line numbers for a related text component. The text
component must use the same line height for each line. TextLineNumber
supports wrapped lines and will highlight the line number of the current line
in the text component.
Quelle:
Rob Camick. "Text Component Line Number". (May 23, 2009).
http://tips4java.wordpress.com/2009/05/23/text-component-line-number/
This class was designed to be used as a component added to the row header of a JScrollPane.
Quelle:
Rob Camick. "Text Component Line Number". (May 23, 2009).
http://tips4java.wordpress.com/2009/05/23/text-component-line-number/
Der Autor sagt in einem Kommentar seines Blogs:
"Rob Camick said, April 11, 2011 at 10:01 am: You are free to use the code
however you wish."
Diverse Überarbeitungen meinerseits: u.a. wird die Registrierung an der Textkomponente nun mittels Methode attachToComponent() vorgenommen, nicht mehr durch Übergabe der Textkomponente an den Konstruktor - das macht u.U. Probleme, weil "this" dadurch bereits im Konstruktor in Aufrufen von Methoden anderer Objekte benutzt wurde, d.h., zu einem Zeitpunkt, zu dem die Initialisierung noch nicht abgeschlossen ist.
- Author:
- Rob Camick, Stefan Reiser
- See Also:
- Serialized Form
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
Field Summary
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
-
Constructor Summary
Constructors Constructor Description TextLineNumber()
Create a line number component.TextLineNumber(int minimumDisplayDigits)
Create a line number component. -
Method Summary
Modifier and Type Method Description void
attachToComponent(javax.swing.text.JTextComponent textComponent)
void
caretUpdate(javax.swing.event.CaretEvent e)
void
changedUpdate(javax.swing.event.DocumentEvent e)
int
getBorderGap()
Gets the border gapjava.awt.Color
getCurrentLineForeground()
Gets the current line rendering Colorfloat
getDigitAlignment()
Gets the digit alignmentint
getMinimumDisplayDigits()
Gets the minimum display digitsprotected java.lang.String
getTextLineNumber(int rowStartOffset)
boolean
getUpdateFont()
Gets the update font propertyvoid
insertUpdate(javax.swing.event.DocumentEvent e)
void
paintComponent(java.awt.Graphics g)
Draw the line numbersvoid
propertyChange(java.beans.PropertyChangeEvent evt)
void
removeUpdate(javax.swing.event.DocumentEvent e)
void
setBorderGap(int borderGap)
The border gap is used in calculating the left and right insets of the border.void
setCurrentLineForeground(java.awt.Color currentLineForeground)
The Color used to render the current line digits.void
setDigitAlignment(float digitAlignment)
Specify the horizontal alignment of the digits within the component.void
setMinimumDisplayDigits(int minimumDisplayDigits)
Specify the mimimum number of digits used to calculate the preferred width of the component.void
setUpdateFont(boolean updateFont)
Set the update font property.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
Methods 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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, 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
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, 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
-
Constructor Details
-
TextLineNumber
public TextLineNumber()Create a line number component. Minimum display width will be based on 3 digits. -
TextLineNumber
public TextLineNumber(int minimumDisplayDigits)Create a line number component.- Parameters:
minimumDisplayDigits
- the number of digits used to calculate the minimum width of the component
-
-
Method Details
-
attachToComponent
public void attachToComponent(javax.swing.text.JTextComponent textComponent) -
getUpdateFont
public boolean getUpdateFont()Gets the update font property- Returns:
- the update font property
-
setUpdateFont
public void setUpdateFont(boolean updateFont)Set the update font property. Indicates whether this Font should be updated automatically when the Font of the related text component is changed.- Parameters:
updateFont
- when true update the Font and repaint the line numbers, otherwise just repaint the line numbers.
-
getBorderGap
public int getBorderGap()Gets the border gap- Returns:
- the border gap in pixels
-
setBorderGap
public final void setBorderGap(int borderGap)The border gap is used in calculating the left and right insets of the border. Default value is 5.- Parameters:
borderGap
- the gap in pixels
-
getCurrentLineForeground
public java.awt.Color getCurrentLineForeground()Gets the current line rendering Color- Returns:
- the Color used to render the current line number
-
setCurrentLineForeground
public final void setCurrentLineForeground(java.awt.Color currentLineForeground)The Color used to render the current line digits. Default is Coolor.RED.- Parameters:
currentLineForeground
- the Color used to render the current line
-
getDigitAlignment
public float getDigitAlignment()Gets the digit alignment- Returns:
- the alignment of the painted digits
-
setDigitAlignment
public final void setDigitAlignment(float digitAlignment)Specify the horizontal alignment of the digits within the component. Common values would be:- TextLineNumber.LEFT
- TextLineNumber.CENTER
- TextLineNumber.RIGHT (default)
-
getMinimumDisplayDigits
public int getMinimumDisplayDigits()Gets the minimum display digits- Returns:
- the minimum display digits
-
setMinimumDisplayDigits
public final void setMinimumDisplayDigits(int minimumDisplayDigits)Specify the mimimum number of digits used to calculate the preferred width of the component. Default is 3.- Parameters:
minimumDisplayDigits
- the number digits used in the preferred width calculation
-
paintComponent
public void paintComponent(java.awt.Graphics g)Draw the line numbers- Overrides:
paintComponent
in classjavax.swing.JComponent
-
getTextLineNumber
protected java.lang.String getTextLineNumber(int rowStartOffset) -
caretUpdate
public void caretUpdate(javax.swing.event.CaretEvent e)- Specified by:
caretUpdate
in interfacejavax.swing.event.CaretListener
-
changedUpdate
public void changedUpdate(javax.swing.event.DocumentEvent e)- Specified by:
changedUpdate
in interfacejavax.swing.event.DocumentListener
-
insertUpdate
public void insertUpdate(javax.swing.event.DocumentEvent e)- Specified by:
insertUpdate
in interfacejavax.swing.event.DocumentListener
-
removeUpdate
public void removeUpdate(javax.swing.event.DocumentEvent e)- Specified by:
removeUpdate
in interfacejavax.swing.event.DocumentListener
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent evt)- Specified by:
propertyChange
in interfacejava.beans.PropertyChangeListener
-