⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dateaxis.java

📁 这是一个segy数据显示程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
     * @return the date format override.     */    public DateFormat getDateFormatOverride() {        return this.dateFormatOverride;    }    /**     * Sets the date format override.  If this is non-null, then it will be used to format     * the dates on the axis.     *     * @param formatter  the date formatter (<code>null</code> permitted).     */    public void setDateFormatOverride(DateFormat formatter) {        this.dateFormatOverride = formatter;        notifyListeners(new AxisChangeEvent(this));    }    /**     * Sets the upper and lower bounds for the axis and sends an {@link AxisChangeEvent} to all     * registered listeners.  As a side-effect, the auto-range flag is set to false.     *     * @param range  the new range (<code>null</code> not permitted).     */    public void setRange(Range range) {        setRange(range, true, true);    }    /**     * Sets the range for the axis, if requested, sends an {@link AxisChangeEvent} to all      * registered listeners.  As a side-effect, the auto-range flag is set to <code>false</code>     * (optional).     *     * @param range  the range (<code>null</code> not permitted).     * @param turnOffAutoRange  a flag that controls whether or not the auto range is turned off.     * @param notify  a flag that controls whether or not listeners are notified.     */    public void setRange(Range range, boolean turnOffAutoRange, boolean notify) {        if (range == null) {            throw new IllegalArgumentException("Null 'range' argument.");        }        // usually the range will be a DateRange, but if it isn't do a conversion...        if (!(range instanceof DateRange)) {            range = new DateRange(range);        }        super.setRange(range, turnOffAutoRange, notify);    }    /**     * Sets the axis range.  An {@link AxisChangeEvent} is sent to all registered listeners.     *     * @param lower  the lower bound for the axis.     * @param upper  the upper bound for the axis.     */    public void setRange(Date lower, Date upper) {        // check arguments...        if (lower.getTime() >= upper.getTime()) {            throw new IllegalArgumentException("DateAxis.setRange(...): lower not before upper.");        }        // make the change...        setRange(new DateRange(lower, upper));    }    /**     * Sets the axis range.  An {@link AxisChangeEvent} is sent to all registered listeners.     *     * @param lower  the lower bound for the axis.     * @param upper  the upper bound for the axis.     */    public void setRange(double lower, double upper) {        // check arguments...        if (lower >= upper) {            throw new IllegalArgumentException("DateAxis.setRange(...): lower >= upper.");        }        // make the change...        setRange(new DateRange(lower, upper));    }    /**     * Returns the earliest date visible on the axis.     *     * @return the earliest date visible on the axis.     */    public Date getMinimumDate() {        Date result = null;        Range range = getRange();        if (range instanceof DateRange) {            DateRange r = (DateRange) range;            result = r.getLowerDate();        }        else {            result = new Date((long) range.getLowerBound());        }        return result;    }    /**     * Sets the minimum date visible on the axis.  An {@link AxisChangeEvent} is sent to all     * registered listeners.     *     * @param minimumDate  the new minimum date.     */    public void setMinimumDate(Date minimumDate) {        setRange(new DateRange(minimumDate, getMaximumDate()), true, false);        notifyListeners(new AxisChangeEvent(this));    }    /**     * Returns the latest date visible on the axis.     *     * @return the latest date visible on the axis.     */    public Date getMaximumDate() {        Date result = null;        Range range = getRange();        if (range instanceof DateRange) {            DateRange r = (DateRange) range;            result = r.getUpperDate();        }        else {            result = new Date((long) range.getUpperBound());        }        return result;    }    /**     * Sets the maximum date visible on the axis.  An {@link AxisChangeEvent} is sent to all     * registered listeners.     *     * @param maximumDate  the new maximum date.     */    public void setMaximumDate(Date maximumDate) {        setRange(new DateRange(getMinimumDate(), maximumDate), true, false);        notifyListeners(new AxisChangeEvent(this));    }    /**     * Returns the tick mark position (start, middle or end of the time period).     *     * @return The position.     */    public DateTickMarkPosition getTickMarkPosition() {        return this.tickMarkPosition;    }    /**     * Sets the tick mark position (start, middle or end of the time period).  An     * {@link AxisChangeEvent} is sent to all registered listeners.     *     * @param position  the new position.     */    public void setTickMarkPosition(DateTickMarkPosition position) {        this.tickMarkPosition = position;        notifyListeners(new AxisChangeEvent(this));    }    /**     * Configures the axis to work with the specified plot.  If the axis has     * auto-scaling, then sets the maximum and minimum values.     */    public void configure() {        if (isAutoRange()) {            autoAdjustRange();        }    }    /**     * Returns <code>true</code> if the axis hides this value, and <code>false</code>     * otherwise.     *     * @param millis  the data value.     *     * @return A value.     */    public boolean isHiddenValue(long millis) {        return (!this.timeline.containsDomainValue(new Date(millis)));    }    /**     * Translates the data value to the display coordinates (Java 2D User Space)     * of the chart.     *     * @param value  the date to be plotted.     * @param area  the rectangle (in Java2D space) where the data is to be plotted.     * @param edge  the axis location.     *     * @return the coordinate corresponding to the supplied data value.     */    public double valueToJava2D(double value, Rectangle2D area, RectangleEdge edge) {                value = this.timeline.toTimelineValue(new Date((long) value));        DateRange range = (DateRange) getRange();        double axisMin = this.timeline.toTimelineValue(range.getLowerDate());        double axisMax = this.timeline.toTimelineValue(range.getUpperDate());        double result = 0.0;        if (RectangleEdge.isTopOrBottom(edge)) {            double minX = area.getX();            double maxX = area.getMaxX();            if (isInverted()) {                result = maxX + ((value - axisMin) / (axisMax - axisMin)) * (minX - maxX);            }            else {                result = minX + ((value - axisMin) / (axisMax - axisMin)) * (maxX - minX);            }        }        else if (RectangleEdge.isLeftOrRight(edge)) {            double minY = area.getMinY();            double maxY = area.getMaxY();            if (isInverted()) {                result = minY + (((value - axisMin) / (axisMax - axisMin)) * (maxY - minY));            }            else {                result = maxY - (((value - axisMin) / (axisMax - axisMin)) * (maxY - minY));            }        }        return result;    }    /**     * Translates a date to Java2D coordinates, based on the range displayed by     * this axis for the specified data area.     *     * @param date  the date.     * @param area  the rectangle (in Java2D space) where the data is to be plotted.     * @param edge  the axis location.     *     * @return the coordinate corresponding to the supplied date.     */    public double dateToJava2D(Date date, Rectangle2D area, RectangleEdge edge) {          double value = date.getTime();        return translateValueToJava2D(value, area, edge);    }    /**     * Translates a Java2D coordinate into the corresponding data value.  To perform this     * translation, you need to know the area used for plotting data, and which edge the     * axis is located on.     *     * @param java2DValue  the coordinate in Java2D space.     * @param area  the rectangle (in Java2D space) where the data is to be plotted.     * @param edge  the axis location.     *     * @return A data value.     */    public double java2DToValue(double java2DValue, Rectangle2D area, RectangleEdge edge) {                DateRange range = (DateRange) getRange();        double axisMin = this.timeline.toTimelineValue(range.getLowerDate());        double axisMax = this.timeline.toTimelineValue(range.getUpperDate());        double min = 0.0;        double max = 0.0;        if (RectangleEdge.isTopOrBottom(edge)) {            min = area.getX();            max = area.getMaxX();        }        else if (RectangleEdge.isLeftOrRight(edge)) {            min = area.getMaxY();            max = area.getY();        }        double result;        if (isInverted()) {             result = axisMax - ((java2DValue - min) / (max - min) * (axisMax - axisMin));        }        else {             result = axisMin + ((java2DValue - min) / (max - min) * (axisMax - axisMin));        }        return this.timeline.toMillisecond((long) result);     }    /**     * Calculates the value of the lowest visible tick on the axis.     *     * @param unit  date unit to use.     *     * @return The value of the lowest visible tick on the axis.     */    public Date calculateLowestVisibleTickValue(DateTickUnit unit) {        return nextStandardDate(getMinimumDate(), unit);    }    /**     * Calculates the value of the highest visible tick on the axis.     *     * @param unit  date unit to use.     *     * @return the value of the highest visible tick on the axis.     */    public Date calculateHighestVisibleTickValue(DateTickUnit unit) {        return previousStandardDate(getMaximumDate(), unit);    }    /**     * Returns the previous "standard" date, for a given date and tick unit.     *     * @param date  the reference date.     * @param unit  the tick unit.     *     * @return the previous "standard" date.     */    protected Date previousStandardDate(Date date, DateTickUnit unit) {        int milliseconds;        int seconds;        int minutes;        int hours;        int days;        int months;        int years;        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int count = unit.getCount();        int current = calendar.get(unit.getCalendarField());        int value = count * (current / count);        switch (unit.getUnit()) {            case (DateTickUnit.MILLISECOND) :                years = calendar.get(Calendar.YEAR);                months = calendar.get(Calendar.MONTH);                days = calendar.get(Calendar.DATE);                hours = calendar.get(Calendar.HOUR_OF_DAY);                minutes = calendar.get(Calendar.MINUTE);                seconds = calendar.get(Calendar.SECOND);                calendar.set(years, months, days, hours, minutes, seconds);                calendar.set(Calendar.MILLISECOND, value);                return calendar.getTime();            case (DateTickUnit.SECOND) :                years = calendar.get(Calendar.YEAR);                months = calendar.get(Calendar.MONTH);                days = calendar.get(Calendar.DATE);                hours = calendar.get(Calendar.HOUR_OF_DAY);                minutes = calendar.get(Calendar.MINUTE);                if (this.tickMarkPosition == DateTickMarkPosition.START) {                    milliseconds = 0;                }                else if (this.tickMarkPosition == DateTickMarkPosition.MIDDLE) {                    milliseconds = 500;                }                else {                    milliseconds = 999;                }                calendar.set(Calendar.MILLISECOND, milliseconds);                calendar.set(years, months, days, hours, minutes, value);                return calendar.getTime();            case (DateTickUnit.MINUTE) :                years = calendar.get(Calendar.YEAR);                months = calendar.get(Calendar.MONTH);                days = calendar.get(Calendar.DATE);                hours = calendar.get(Calendar.HOUR_OF_DAY);                if (this.tickMarkPosition == DateTickMarkPosition.START) {                    seconds = 0;                }                else if (this.tickMarkPosition == DateTickMarkPosition.MIDDLE) {                    seconds = 30;                }                else {                    seconds = 59;                }                calendar.clear(Calendar.MILLISECOND);                calendar.set(years, months, days, hours, value, seconds);                return calendar.getTime();            case (DateTickUnit.HOUR) :                years = calendar.get(Calendar.YEAR);                months = calendar.get(Calendar.MONTH);                days = calendar.get(Calendar.DATE);                if (this.tickMarkPosition == DateTickMarkPosition.START) {                    minutes = 0;                    seconds = 0;                }                else if (this.tickMarkPosition == DateTickMarkPosition.MIDDLE) {                    minutes = 30;                    seconds = 0;                }                else {                    minutes = 59;                    seconds = 59;                }                calendar.clear(Calendar.MILLISECOND);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -