📄 numberaxis.java
字号:
units.add(new NumberTickUnit(100000000, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(1000000000, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(10000000000.0, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(100000000000.0, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(0.00000025, new DecimalFormat("0.00000000"))); units.add(new NumberTickUnit(0.0000025, new DecimalFormat("0.0000000"))); units.add(new NumberTickUnit(0.000025, new DecimalFormat("0.000000"))); units.add(new NumberTickUnit(0.00025, new DecimalFormat("0.00000"))); units.add(new NumberTickUnit(0.0025, new DecimalFormat("0.0000"))); units.add(new NumberTickUnit(0.025, new DecimalFormat("0.000"))); units.add(new NumberTickUnit(0.25, new DecimalFormat("0.00"))); units.add(new NumberTickUnit(2.5, new DecimalFormat("0.0"))); units.add(new NumberTickUnit(25, new DecimalFormat("0"))); units.add(new NumberTickUnit(250, new DecimalFormat("0"))); units.add(new NumberTickUnit(2500, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(25000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(250000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(2500000, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(25000000, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(250000000, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(2500000000.0, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(25000000000.0, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(250000000000.0, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(0.0000005, new DecimalFormat("0.0000000"))); units.add(new NumberTickUnit(0.000005, new DecimalFormat("0.000000"))); units.add(new NumberTickUnit(0.00005, new DecimalFormat("0.00000"))); units.add(new NumberTickUnit(0.0005, new DecimalFormat("0.0000"))); units.add(new NumberTickUnit(0.005, new DecimalFormat("0.000"))); units.add(new NumberTickUnit(0.05, new DecimalFormat("0.00"))); units.add(new NumberTickUnit(0.5, new DecimalFormat("0.0"))); units.add(new NumberTickUnit(5L, new DecimalFormat("0"))); units.add(new NumberTickUnit(50L, new DecimalFormat("0"))); units.add(new NumberTickUnit(500L, new DecimalFormat("0"))); units.add(new NumberTickUnit(5000L, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(50000L, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(500000L, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(5000000L, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(50000000L, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(500000000L, new DecimalFormat("#,###,##0"))); units.add(new NumberTickUnit(5000000000L, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(50000000000L, new DecimalFormat("#,###,###,##0"))); units.add(new NumberTickUnit(500000000000L, new DecimalFormat("#,###,###,##0"))); return units; } /** * Returns a collection of tick units for integer values. * * @return a collection of tick units for integer values. */ public static TickUnitSource createIntegerTickUnits() { TickUnits units = new TickUnits(); units.add(new NumberTickUnit(1, new DecimalFormat("0"))); units.add(new NumberTickUnit(2, new DecimalFormat("0"))); units.add(new NumberTickUnit(5, new DecimalFormat("0"))); units.add(new NumberTickUnit(10, new DecimalFormat("0"))); units.add(new NumberTickUnit(20, new DecimalFormat("0"))); units.add(new NumberTickUnit(50, new DecimalFormat("0"))); units.add(new NumberTickUnit(100, new DecimalFormat("0"))); units.add(new NumberTickUnit(200, new DecimalFormat("0"))); units.add(new NumberTickUnit(500, new DecimalFormat("0"))); units.add(new NumberTickUnit(1000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(2000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(5000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(10000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(20000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(50000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(100000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(200000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(500000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(1000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(2000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(5000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(10000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(20000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(50000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(100000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(200000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(500000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(1000000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(2000000000, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(5000000000.0, new DecimalFormat("#,##0"))); units.add(new NumberTickUnit(10000000000.0, new DecimalFormat("#,##0"))); return units; } /** * Creates a collection of standard tick units. The supplied locale is used to create the * number formatter (a localised instance of <code>NumberFormat</code>). * <P> * If you don't like these defaults, create your own instance of {@link TickUnits} * and then pass it to the <code>setStandardTickUnits(...)</code> method. * * @param locale the locale. * * @return a tick unit collection. */ public static TickUnitSource createStandardTickUnits(Locale locale) { TickUnits units = new TickUnits(); NumberFormat numberFormat = NumberFormat.getNumberInstance(locale); // we can add the units in any order, the TickUnits collection will sort them... units.add(new NumberTickUnit(0.0000001, numberFormat)); units.add(new NumberTickUnit(0.000001, numberFormat)); units.add(new NumberTickUnit(0.00001, numberFormat)); units.add(new NumberTickUnit(0.0001, numberFormat)); units.add(new NumberTickUnit(0.001, numberFormat)); units.add(new NumberTickUnit(0.01, numberFormat)); units.add(new NumberTickUnit(0.1, numberFormat)); units.add(new NumberTickUnit(1, numberFormat)); units.add(new NumberTickUnit(10, numberFormat)); units.add(new NumberTickUnit(100, numberFormat)); units.add(new NumberTickUnit(1000, numberFormat)); units.add(new NumberTickUnit(10000, numberFormat)); units.add(new NumberTickUnit(100000, numberFormat)); units.add(new NumberTickUnit(1000000, numberFormat)); units.add(new NumberTickUnit(10000000, numberFormat)); units.add(new NumberTickUnit(100000000, numberFormat)); units.add(new NumberTickUnit(1000000000, numberFormat)); units.add(new NumberTickUnit(10000000000.0, numberFormat)); units.add(new NumberTickUnit(0.00000025, numberFormat)); units.add(new NumberTickUnit(0.0000025, numberFormat)); units.add(new NumberTickUnit(0.000025, numberFormat)); units.add(new NumberTickUnit(0.00025, numberFormat)); units.add(new NumberTickUnit(0.0025, numberFormat)); units.add(new NumberTickUnit(0.025, numberFormat)); units.add(new NumberTickUnit(0.25, numberFormat)); units.add(new NumberTickUnit(2.5, numberFormat)); units.add(new NumberTickUnit(25, numberFormat)); units.add(new NumberTickUnit(250, numberFormat)); units.add(new NumberTickUnit(2500, numberFormat)); units.add(new NumberTickUnit(25000, numberFormat)); units.add(new NumberTickUnit(250000, numberFormat)); units.add(new NumberTickUnit(2500000, numberFormat)); units.add(new NumberTickUnit(25000000, numberFormat)); units.add(new NumberTickUnit(250000000, numberFormat)); units.add(new NumberTickUnit(2500000000.0, numberFormat)); units.add(new NumberTickUnit(25000000000.0, numberFormat)); units.add(new NumberTickUnit(0.0000005, numberFormat)); units.add(new NumberTickUnit(0.000005, numberFormat)); units.add(new NumberTickUnit(0.00005, numberFormat)); units.add(new NumberTickUnit(0.0005, numberFormat)); units.add(new NumberTickUnit(0.005, numberFormat)); units.add(new NumberTickUnit(0.05, numberFormat)); units.add(new NumberTickUnit(0.5, numberFormat)); units.add(new NumberTickUnit(5L, numberFormat)); units.add(new NumberTickUnit(50L, numberFormat)); units.add(new NumberTickUnit(500L, numberFormat)); units.add(new NumberTickUnit(5000L, numberFormat)); units.add(new NumberTickUnit(50000L, numberFormat)); units.add(new NumberTickUnit(500000L, numberFormat)); units.add(new NumberTickUnit(5000000L, numberFormat)); units.add(new NumberTickUnit(50000000L, numberFormat)); units.add(new NumberTickUnit(500000000L, numberFormat)); units.add(new NumberTickUnit(5000000000L, numberFormat)); units.add(new NumberTickUnit(50000000000L, numberFormat)); return units; } /** * Returns a collection of tick units for integer values. * Uses a given Locale to create the DecimalFormats. * * @param locale the locale to use to represent Numbers. * * @return a collection of tick units for integer values. */ public static TickUnitSource createIntegerTickUnits(Locale locale) { TickUnits units = new TickUnits(); NumberFormat numberFormat = NumberFormat.getNumberInstance(locale); units.add(new NumberTickUnit(1, numberFormat)); units.add(new NumberTickUnit(2, numberFormat)); units.add(new NumberTickUnit(5, numberFormat)); units.add(new NumberTickUnit(10, numberFormat)); units.add(new NumberTickUnit(20, numberFormat)); units.add(new NumberTickUnit(50, numberFormat)); units.add(new NumberTickUnit(100, numberFormat)); units.add(new NumberTickUnit(200, numberFormat)); units.add(new NumberTickUnit(500, numberFormat)); units.add(new NumberTickUnit(1000, numberFormat)); units.add(new NumberTickUnit(2000, numberFormat)); units.add(new NumberTickUnit(5000, numberFormat)); units.add(new NumberTickUnit(10000, numberFormat)); units.add(new NumberTickUnit(20000, numberFormat)); units.add(new NumberTickUnit(50000, numberFormat)); units.add(new NumberTickUnit(100000, numberFormat)); units.add(new NumberTickUnit(200000, numberFormat)); units.add(new NumberTickUnit(500000, numberFormat)); units.add(new NumberTickUnit(1000000, numberFormat)); units.add(new NumberTickUnit(2000000, numberFormat)); units.add(new NumberTickUnit(5000000, numberFormat)); units.add(new NumberTickUnit(10000000, numberFormat)); units.add(new NumberTickUnit(20000000, numberFormat)); units.add(new NumberTickUnit(50000000, numberFormat)); units.add(new NumberTickUnit(100000000, numberFormat)); units.add(new NumberTickUnit(200000000, numberFormat)); units.add(new NumberTickUnit(500000000, numberFormat)); units.add(new NumberTickUnit(1000000000, numberFormat)); units.add(new NumberTickUnit(2000000000, numberFormat)); units.add(new NumberTickUnit(5000000000.0, numberFormat)); units.add(new NumberTickUnit(10000000000.0, numberFormat)); return units; } /** * Estimates the maximum tick label height. * * @param g2 the graphics device. * * @return The maximum height. */ protected double estimateMaximumTickLabelHeight(Graphics2D g2) { Insets tickLabelInsets = getTickLabelInsets(); double result = tickLabelInsets.top + tickLabelInsets.bottom; Font tickLabelFont = getTickLabelFont(); FontRenderContext frc = g2.getFontRenderContext(); result += tickLabelFont.getLineMetrics("123", frc).getHeight(); return result; } /** * Estimates the maximum width of the tick labels, assuming the specified tick unit is used. * <P> * Rather than computing the string bounds of every tick on the axis, we just look at two * values: the lower bound and the upper bound for the axis. These two values will usually * be representative. * * @param g2 the graphics device. * @param tickUnit the tick unit to use for calculation. * * @return the estimated maximum width of the tick labels. */ protected double estimateMaximumTickLabelWidth(Graphics2D g2, TickUnit tickUnit) { Insets tickLabelInsets = getTickLabelInsets(); double result = tickLabelInsets.left + tickLabelInsets.right; if (isVerticalTickLabels()) { // all tick labels have the same width (equal to the height of the font)... FontRenderContext frc = g2.getFontRenderContext(); LineMetrics lm = getTickLabelFont().getLineMetrics("0", frc); result += lm.getHeight(); } else { // look at lower and upper bounds... FontMetrics fm = g2.getFontMetrics(getTickLabelFont()); Range range = getRange(); double lower = range.getLowerBound(); double upper = range.getUpperBound(); String lowerStr = tickUnit.valueToString(lower); String upperStr = tickUnit.valueToString(upper); double w1 = fm.stringWidth(lowerStr); double w2 = fm.stringWidth(upperStr); result += Math.max(w1, w2); } return result; } /** * 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 drawArea the area in which the plot and axes should be drawn. * @param dataArea the area defined by the axes. * @param edge the axis location. */ protected void selectAutoTickUnit(Graphics2D g2, Rectangle2D drawArea, Rectangle2D dataArea, RectangleEdge edge) { if (RectangleEdge.isTopOrBottom(edge)) { selectHorizontalAutoTickUnit(g2, drawArea, dataArea, edge); } else if (RectangleEdge.isLeftOrRight(edge)) { selectVerticalAutoTickUnit(g2, drawArea, dataArea, edge); } } /** * 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 drawArea the area in which the plot and axes should be drawn. * @param dataArea the area defined by the axes. * @param edge the axis location.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -