Class JKeyValueList

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
de.stefanreiser.swing.JKeyValueList
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class JKeyValueList
extends javax.swing.JPanel
GUI-Komponente, die eine Art "Property-Editor" zur Verfügung stellt (Editor für Schlüssel-Werte-Paare). Die Schlüssel sind unveränderlich, die Werte können bearbeitet werden. Intern wird eine JTable verwendet.

Achtung: Alle Werte sollten vom gleichen Typ sein. Für beliebige gemischte Datentypen kann der Typ 'Object' verwendet werden - in diesem Fall werden die Werte allerdings zu Strings, sobald sie editiert wurden, unabhängig von ihrem vorherigen Typ, da der DefaultCellEditor die toString-Methode verwendet. Für Details siehe die Beschreibung des Parameters valueClass in setData().

Author:
Stefan
See Also:
Serialized Form
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  JKeyValueList.MyJTable
    JTable mit speziellem Verhalten: Zellen in der ersten Spalte können nicht fokussiert werden.
    static interface  JKeyValueList.UpdatesListener  

    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

    Nested classes/interfaces inherited from class java.awt.Container

    java.awt.Container.AccessibleAWTContainer

    Nested classes/interfaces inherited from class java.awt.Component

    java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
  • 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

    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 
    Constructor Description
    JKeyValueList()
    Creates new form JKeyValueList1
  • Method Summary

    Modifier and Type Method Description
    void addUpdatesListener​(JKeyValueList.UpdatesListener listener)
    Fügt einen UpdatesListener hinzu.
    void clearUpdatesFlag()
    Löscht das Flag, das anzeigt, ob eine Bearbeitung mindestens einer Zelle stattgefunden hat.
    java.util.LinkedHashMap<java.lang.String,​java.lang.Object> getData()
    Liefert die Daten als LinkedHashMap.
    boolean hasUpdates()
    Zeigt an, ob eine Bearbeitung mindestens einer Zelle stattgefunden hat.
    boolean removeUpdatesListener​(JKeyValueList.UpdatesListener listener)
    Entfernt einen UpdatesListener.
    void setData​(java.util.LinkedHashMap<java.lang.String,​? extends java.lang.Object> map, java.lang.Class valueClass)
    Füllt die Tabelle mit einem Datensatz.

    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, paintComponent, 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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • JKeyValueList

      public JKeyValueList()
      Creates new form JKeyValueList1
  • Method Details

    • setData

      public final void setData​(java.util.LinkedHashMap<java.lang.String,​? extends java.lang.Object> map, java.lang.Class valueClass)
      Füllt die Tabelle mit einem Datensatz. Löscht zudem das Updates-Flag: hasUpdates liefert anschließend false, bis wieder eine Bearbeitung einer Zelle stattgefunden hat.
      Parameters:
      map - Eine Hashmap mit Schlüssel-Werte-Paaren. Falls map == null übergeben wird, dann wird ein leerer Datensatz gesetzt. Es kann dann nichts eingegeben werden.
      valueClass - Die Klasse, der sämtliche Werte angehören. Folgende Besonderheiten sind zu beachten:

      - Verwendung des Typs Object: Datenmodell kann beliebige gemischte Daten vom Typ Object enthalten. Sobald die Daten bearbeitet werden, werden sie dann jedoch zu Strings (weil der DefaultCellEditor die toString-Methode verwendet).

      - Verwendung von Double.class oder Float.class: Alle Werte sollten Zahlen sein. Falls andere Datentypen vorkommen, werden diese mittels toString() dargestellt, lassen sich aber nicht editieren. (D.h., die GUI-Komponente ist hier tolerant, auch wenn dies keine sinnvolle Verwendung der Komponente darstellt.)

      - Verwendung anderer Klassen, z.B. Boolean.class: Falls andere als der angegebene Datentyp vorkommen, kommt es zu ClassCastExceptions. (Die Notwendigkeit, einen einheitlichen Datentyp zu verwenden, ergibt sich daraus, dass die unterliegenden Klassen JTable und TableModel darauf ausgelegt sind, Datentypen spaltenweise, nicht zellenweise festzulegen.)

    • getData

      public java.util.LinkedHashMap<java.lang.String,​java.lang.Object> getData()
      Liefert die Daten als LinkedHashMap.
      Returns:
      Gibt den gegenwärtig in der Tabelle enthaltenen Datensatz zurück.
    • hasUpdates

      public boolean hasUpdates()
      Zeigt an, ob eine Bearbeitung mindestens einer Zelle stattgefunden hat.
      Returns:
      Liefert true, wenn seit dem letzten Aufruf von clearUpdatesFlag() oder von setData() eine Bearbeitung stattgefunden hat, sonst false.
    • clearUpdatesFlag

      public void clearUpdatesFlag()
      Löscht das Flag, das anzeigt, ob eine Bearbeitung mindestens einer Zelle stattgefunden hat. Benachrichtigt die Updates-Listener. Die Methode hasUpdates() liefert anschließend false, solange bis wieder eine Bearbeitung stattgefunden hat.
    • addUpdatesListener

      public void addUpdatesListener​(JKeyValueList.UpdatesListener listener)
      Fügt einen UpdatesListener hinzu.
      Parameters:
      listener -
    • removeUpdatesListener

      public boolean removeUpdatesListener​(JKeyValueList.UpdatesListener listener)
      Entfernt einen UpdatesListener.
      Parameters:
      listener -
      Returns:
      true, wenn der UpdatesListener entfernt wurde, false, wenn er nicht registiert war.