Class LabelFormatterNumber

  • All Implemented Interfaces:
    IAxisLabelFormatter, java.io.Serializable
    Direct Known Subclasses:
    LabelFormatterSimple

    public class LabelFormatterNumber
    extends ALabelFormatter
    implements IAxisLabelFormatter
    An ILabelFormatter that is based on a NumberFormat

    To avoid loss of precision please choose a sufficient resolution for your constructor given NumberFormat. Example: If you add new TracePoint2D instances to the Chart2D every second, prefer using a NumberFormat that at least formats the seconds like (e.g.):

     NumberFormat format = new java.text.SimpleDateFormat("HH:mm:ss");
     

    Version:
    $Revision: 1.18 $
    Author:
    Achim Westermann
    See Also:
    Serialized Form
    • Field Detail

      • m_numberFormat

        protected java.text.NumberFormat m_numberFormat
        The number format to use.
    • Constructor Detail

      • LabelFormatterNumber

        public LabelFormatterNumber()
        Default constructor that uses the defalut constructor of DecimalFormat.

      • LabelFormatterNumber

        public LabelFormatterNumber​(java.text.NumberFormat numberFormat)
        Creates a label formatter that uses the given number format.

        Parameters:
        numberFormat - the number format to use.
    • Method Detail

      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class ALabelFormatter
        See Also:
        Object.equals(java.lang.Object)
      • format

        public java.lang.String format​(double value)
        Description copied from interface: IAxisLabelFormatter
        Provide a String for the value. Subclasses should override the label formatting here. The raw value is passed here to allow a general treatment. Transformations of this raw value should be done here (e.g. division by multiples of 1000 for scientific unit system display, date formatting,...).

        Specified by:
        format in interface IAxisLabelFormatter
        Parameters:
        value - the value to format.
        Returns:
        the formatted value.
        See Also:
        IAxisLabelFormatter.format(double)
      • getMinimumValueShiftForChange

        public double getMinimumValueShiftForChange()
        Description copied from interface: IAxisLabelFormatter
        Returns the minimum change in the value to format that will cause to return a different formatted String.

        To achieve two different formatted Strings to be returned from the format method the corresponding values given to the format method have to differ at least by this value.

        Some implementations (e.g. a formatter for date) have to use their own format method an increas a value to determine when the first change will occur. This is expensive and it's recommended that this action is performed once only and the result is stored. Additionally this routine has to start with an "even" (see IAxisLabelFormatter.getNextEvenValue(double, boolean)) value to get a correct result (the distance from even number to even number).

        Specified by:
        getMinimumValueShiftForChange in interface IAxisLabelFormatter
        Returns:
        the minimum change in the value to format that will cause to return a different formatted String.
        See Also:
        IAxisLabelFormatter.getMinimumValueShiftForChange()
      • getNextEvenValue

        public double getNextEvenValue​(double value,
                                       boolean ceiling)
        Description copied from interface: IAxisLabelFormatter
        Returns the next "even" value to the given one. "Even" means that the format method will exactly return the String for the value and not cut or round any information. A label String created with an "even" number will be exactly at the position it describes.

        Specified by:
        getNextEvenValue in interface IAxisLabelFormatter
        Parameters:
        value - the value to get the next "even" value for.
        ceiling - if true, the next higher number will returned, else the next lower one.
        Returns:
        the next "even" value to the given one.
        See Also:
        IAxisLabelFormatter.getNextEvenValue(double, boolean)
      • getNumberFormat

        public java.text.NumberFormat getNumberFormat()
        Returns the internal NumberFormat.

        Returns:
        the internal NumberFormat.