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

📄 numberaxis.java

📁 这是一个segy数据显示程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
     */   protected void selectHorizontalAutoTickUnit(Graphics2D g2,                                               Rectangle2D drawArea,                                                Rectangle2D dataArea,                                               RectangleEdge edge) {        double zero = translateValueToJava2D(0.0, dataArea, edge);        double tickLabelWidth = estimateMaximumTickLabelWidth(g2, getTickUnit());        // start with the current tick unit...        TickUnitSource tickUnits = getStandardTickUnits();        TickUnit unit1 = tickUnits.getCeilingTickUnit(getTickUnit());        double x1 = translateValueToJava2D(unit1.getSize(), dataArea, edge);        double unit1Width = Math.abs(x1 - zero);        // then extrapolate...        double guess = (tickLabelWidth / unit1Width) * unit1.getSize();        NumberTickUnit unit2 = (NumberTickUnit) tickUnits.getCeilingTickUnit(guess);        double x2 = translateValueToJava2D(unit2.getSize(), dataArea, edge);        double unit2Width = Math.abs(x2 - zero);        tickLabelWidth = estimateMaximumTickLabelWidth(g2, unit2);        if (tickLabelWidth > unit2Width) {            unit2 = (NumberTickUnit) tickUnits.getLargerTickUnit(unit2);        }        setTickUnit(unit2, false, false);    }    /**     * Selects an appropriate tick value for the axis.  The strategy is to     * display as many ticks as possible (selected from an array of 'standard'     * tick units) without the labels overlapping.     *     * @param g2  the graphics device.     * @param plotArea  the area in which the plot and axes should be drawn.     * @param dataArea  the area in which the plot should be drawn.     * @param edge  the axis location.     */    protected void selectVerticalAutoTickUnit(Graphics2D g2,                                               Rectangle2D plotArea,                                              Rectangle2D dataArea,                                               RectangleEdge edge) {        double zero = translateValueToJava2D(0.0, dataArea, edge);        double tickLabelHeight = estimateMaximumTickLabelHeight(g2);        // start with the current tick unit...        TickUnitSource tickUnits = getStandardTickUnits();        TickUnit unit1 = tickUnits.getCeilingTickUnit(getTickUnit());        double y = translateValueToJava2D(unit1.getSize(), dataArea, edge);        double unitHeight = Math.abs(y - zero);        // then extrapolate...        double guess = (tickLabelHeight / unitHeight) * unit1.getSize();                NumberTickUnit unit2 = (NumberTickUnit) tickUnits.getCeilingTickUnit(guess);        double y2 = translateValueToJava2D(unit2.getSize(), dataArea, edge);        double unit2Height = Math.abs(y2 - zero);        tickLabelHeight = estimateMaximumTickLabelHeight(g2);        if (tickLabelHeight > unit2Height) {            unit2 = (NumberTickUnit) tickUnits.getLargerTickUnit(unit2);        }        setTickUnit(unit2, false, false);    }        /**     * Calculates the positions of the tick labels for the axis, storing the results in the     * tick label list (ready for drawing).     *     * @param g2  the graphics device.     * @param state  the axis state.     * @param plotArea  the area in which the plot and the axes should be drawn.     * @param dataArea  the area in which the plot should be drawn.     * @param edge  the location of the axis.     *      * @return A list of ticks.     *     */    public List refreshTicks(Graphics2D g2,                              AxisState state,                             Rectangle2D plotArea,                              Rectangle2D dataArea,                             RectangleEdge edge) {        List result = new java.util.ArrayList();        if (RectangleEdge.isTopOrBottom(edge)) {            result = refreshHorizontalTicks(g2, state.getCursor(), plotArea, dataArea, edge);        }        else if (RectangleEdge.isLeftOrRight(edge)) {            result = refreshVerticalTicks(g2, state.getCursor(), plotArea, dataArea, edge);        }        return result;    }    /**     * Calculates the positions of the tick labels for the axis, storing the results in the     * tick label list (ready for drawing).     *     * @param g2  the graphics device.     * @param cursor  the cursor.     * @param plotArea  the area in which the plot (inlcuding axes) should be drawn.     * @param dataArea  the area in which the data should be drawn.     * @param edge  the location of the axis.     *      * @return A list of ticks.     */    protected List refreshHorizontalTicks(Graphics2D g2, double cursor,                                          Rectangle2D plotArea, Rectangle2D dataArea,                                          RectangleEdge edge) {        List result = new java.util.ArrayList();        Font tickLabelFont = getTickLabelFont();        g2.setFont(tickLabelFont);                if (isAutoTickUnitSelection()) {            selectAutoTickUnit(g2, plotArea, dataArea, edge);        }        double size = getTickUnit().getSize();        int count = calculateVisibleTickCount();        double lowestTickValue = calculateLowestVisibleTickValue();        if (count <= ValueAxis.MAXIMUM_TICK_COUNT) {            for (int i = 0; i < count; i++) {                double currentTickValue = lowestTickValue + (i * size);                String tickLabel;                NumberFormat formatter = getNumberFormatOverride();                if (formatter != null) {                    tickLabel = formatter.format(currentTickValue);                }                else {                    tickLabel = getTickUnit().valueToString(currentTickValue);                }                TextAnchor anchor = null;                TextAnchor rotationAnchor = null;                double angle = 0.0;                if (isVerticalTickLabels()) {                    anchor = TextAnchor.CENTER_RIGHT;                    rotationAnchor = TextAnchor.CENTER_RIGHT;                    if (edge == RectangleEdge.TOP) {                        angle = Math.PI / 2.0;                    }                    else {                        angle = -Math.PI / 2.0;                    }                }                else {                    if (edge == RectangleEdge.TOP) {                        anchor = TextAnchor.BOTTOM_CENTER;                        rotationAnchor = TextAnchor.BOTTOM_CENTER;                    }                    else {                        anchor = TextAnchor.TOP_CENTER;                        rotationAnchor = TextAnchor.TOP_CENTER;                    }                }                Tick tick = new NumberTick(                    new Double(currentTickValue), tickLabel, anchor, rotationAnchor, angle                );                result.add(tick);            }        }        return result;    }    /**     * Calculates the positions of the tick labels for the axis, storing the results in the     * tick label list (ready for drawing).     *     * @param g2  the graphics device.     * @param cursor  the cursor location.     * @param plotArea  the area in which the plot and the axes should be drawn.     * @param dataArea  the area in which the plot should be drawn.     * @param edge  the location of the axis.     *      * @return A list of ticks.     *     */    protected List refreshVerticalTicks(Graphics2D g2, double cursor,                                         Rectangle2D plotArea, Rectangle2D dataArea,                                        RectangleEdge edge) {        List result = new java.util.ArrayList();        result.clear();        Font tickLabelFont = getTickLabelFont();        g2.setFont(tickLabelFont);        if (isAutoTickUnitSelection()) {            selectAutoTickUnit(g2, plotArea, dataArea, edge);        }        double size = getTickUnit().getSize();        int count = calculateVisibleTickCount();        double lowestTickValue = calculateLowestVisibleTickValue();        if (count <= ValueAxis.MAXIMUM_TICK_COUNT) {            for (int i = 0; i < count; i++) {                double currentTickValue = lowestTickValue + (i * size);                String tickLabel;                NumberFormat formatter = getNumberFormatOverride();                if (formatter != null) {                    tickLabel = formatter.format(currentTickValue);                }                else {                    tickLabel = getTickUnit().valueToString(currentTickValue);                }                TextAnchor anchor = null;                TextAnchor rotationAnchor = null;                double angle = 0.0;                if (isVerticalTickLabels()) {                    if (edge == RectangleEdge.LEFT) {                         anchor = TextAnchor.BOTTOM_CENTER;                        rotationAnchor = TextAnchor.BOTTOM_CENTER;                        angle = -Math.PI / 2.0;                    }                    else {                        anchor = TextAnchor.BOTTOM_CENTER;                        rotationAnchor = TextAnchor.BOTTOM_CENTER;                        angle = Math.PI / 2.0;                    }                }                else {                    if (edge == RectangleEdge.LEFT) {                        anchor = TextAnchor.CENTER_RIGHT;                        rotationAnchor = TextAnchor.CENTER_RIGHT;                    }                    else {                        anchor = TextAnchor.CENTER_LEFT;                        rotationAnchor = TextAnchor.CENTER_LEFT;                    }                }                Tick tick = new NumberTick(                    new Double(currentTickValue), tickLabel, anchor, rotationAnchor, angle                );                result.add(tick);            }        }        return result;    }        /**     * Returns a clone of the axis.     *      * @return A clone     *      * @throws CloneNotSupportedException if some component of the axis does not support cloning.     */    public Object clone() throws CloneNotSupportedException {        NumberAxis clone = (NumberAxis) super.clone();                if (this.numberFormatOverride != null) {            clone.numberFormatOverride = (NumberFormat) this.numberFormatOverride.clone();        }                return clone;    }    /**     * Tests an object for equality with this instance.     *      * @param object  the object.     *      * @return A boolean.     */        public boolean equals(Object object) {                if (object == null) {            return false;        }                if (object == this) {            return true;        }                if (object instanceof NumberAxis) {            if (super.equals(object)) {                                NumberAxis axis = (NumberAxis) object;                                boolean b0 = (this.autoRangeIncludesZero == axis.autoRangeIncludesZero);                boolean b1 = (this.autoRangeStickyZero == axis.autoRangeStickyZero);                boolean b2 = ObjectUtils.equal(this.tickUnit, axis.tickUnit);                boolean b3 = ObjectUtils.equal(this.numberFormatOverride,                                                axis.numberFormatOverride);                //boolean b4 = ObjectUtils.equalOrBothNull(this.markerBand, axis.markerBand);                return b0 && b1 && b2 && b3;                            }        }                return false;            }}

⌨️ 快捷键说明

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