📄 abstractxyitemrenderer.java
字号:
ValueAxis axis,
Rectangle2D dataArea,
double start, double end) {
double x1 = axis.translateValueToJava2D(start, dataArea, plot.getDomainAxisEdge());
double x2 = axis.translateValueToJava2D(end, dataArea, plot.getDomainAxisEdge());
// need to change the next line to take account of plot orientation...
Rectangle2D band = new Rectangle2D.Double(x1, dataArea.getMinY(),
x2 - x1, dataArea.getMaxY() - dataArea.getMinY());
Paint paint = plot.getDomainTickBandPaint();
if (paint != null) {
g2.setPaint(paint);
g2.fill(band);
}
}
/**
* Fills a band between two values on the range axis. This can be used to color bands between
* the grid lines.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param axis the range axis.
* @param dataArea the data area.
* @param start the start value.
* @param end the end value.
*/
public void fillRangeGridBand(Graphics2D g2,
XYPlot plot,
ValueAxis axis,
Rectangle2D dataArea,
double start, double end) {
double y1 = axis.translateValueToJava2D(start, dataArea, plot.getRangeAxisEdge());
double y2 = axis.translateValueToJava2D(end, dataArea, plot.getRangeAxisEdge());
// need to change the next line to take account of the plot orientation
Rectangle2D band = new Rectangle2D.Double(dataArea.getMinX(), y2,
dataArea.getWidth(), y1 - y2);
Paint paint = plot.getRangeTickBandPaint();
if (paint != null) {
g2.setPaint(paint);
g2.fill(band);
}
}
/**
* Draws a grid line against the range axis.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param axis the value axis.
* @param dataArea the area for plotting data (not yet adjusted for any 3D effect).
* @param value the value at which the grid line should be drawn.
*
*/
public void drawDomainGridLine(Graphics2D g2,
XYPlot plot,
ValueAxis axis,
Rectangle2D dataArea,
double value) {
Range range = axis.getRange();
if (!range.contains(value)) {
return;
}
PlotOrientation orientation = plot.getOrientation();
double v = axis.translateValueToJava2D(value, dataArea, plot.getDomainAxisEdge());
Line2D line = null;
if (orientation == PlotOrientation.HORIZONTAL) {
line = new Line2D.Double(dataArea.getMinX(), v, dataArea.getMaxX(), v);
}
else if (orientation == PlotOrientation.VERTICAL) {
line = new Line2D.Double(v, dataArea.getMinY(), v, dataArea.getMaxY());
}
Paint paint = plot.getDomainGridlinePaint();
Stroke stroke = plot.getDomainGridlineStroke();
g2.setPaint(paint != null ? paint : Plot.DEFAULT_OUTLINE_PAINT);
g2.setStroke(stroke != null ? stroke : Plot.DEFAULT_OUTLINE_STROKE);
g2.draw(line);
}
/**
* Draws a grid line against the range axis.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param axis the value axis.
* @param dataArea the area for plotting data (not yet adjusted for any 3D effect).
* @param value the value at which the grid line should be drawn.
*
*/
public void drawRangeGridLine(Graphics2D g2,
XYPlot plot,
ValueAxis axis,
Rectangle2D dataArea,
double value) {
Range range = axis.getRange();
if (!range.contains(value)) {
return;
}
PlotOrientation orientation = plot.getOrientation();
Line2D line = null;
double v = axis.translateValueToJava2D(value, dataArea, plot.getRangeAxisEdge());
if (orientation == PlotOrientation.HORIZONTAL) {
line = new Line2D.Double(v, dataArea.getMinY(), v, dataArea.getMaxY());
}
else if (orientation == PlotOrientation.VERTICAL) {
line = new Line2D.Double(dataArea.getMinX(), v, dataArea.getMaxX(), v);
}
Paint paint = plot.getRangeGridlinePaint();
Stroke stroke = plot.getRangeGridlineStroke();
g2.setPaint(paint != null ? paint : Plot.DEFAULT_OUTLINE_PAINT);
g2.setStroke(stroke != null ? stroke : Plot.DEFAULT_OUTLINE_STROKE);
g2.draw(line);
}
/**
* Draws a vertical line on the chart to represent a 'range marker'.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param domainAxis the domain axis.
* @param marker the marker line.
* @param dataArea the axis data area.
*/
public void drawDomainMarker(Graphics2D g2,
XYPlot plot,
ValueAxis domainAxis,
Marker marker,
Rectangle2D dataArea) {
double value = marker.getValue();
Range range = domainAxis.getRange();
if (!range.contains(value)) {
return;
}
double x = domainAxis.translateValueToJava2D(marker.getValue(), dataArea,
plot.getDomainAxisEdge());
Line2D line = new Line2D.Double(x, dataArea.getMinY(), x, dataArea.getMaxY());
Paint paint = marker.getOutlinePaint();
Stroke stroke = marker.getOutlineStroke();
g2.setPaint(paint != null ? paint : Plot.DEFAULT_OUTLINE_PAINT);
g2.setStroke(stroke != null ? stroke : Plot.DEFAULT_OUTLINE_STROKE);
g2.draw(line);
String label = marker.getLabel();
Font font = marker.getLabelFont();
MarkerLabelPosition position = marker.getLabelPosition();
if (label != null) {
g2.setFont(font);
FontRenderContext frc = g2.getFontRenderContext();
LineMetrics metrics = font.getLineMetrics(label, frc);
Rectangle2D bounds = font.getStringBounds(label, frc);
double xx = 0.0;
double yy = 0.0;
if (position == MarkerLabelPosition.TOP_LEFT) {
xx = x - bounds.getWidth() - 2.0;
yy = dataArea.getMinY() + bounds.getHeight();
}
else if (position == MarkerLabelPosition.TOP_RIGHT) {
xx = x + 2.0;
yy = dataArea.getMinY() + bounds.getHeight();
}
else if (position == MarkerLabelPosition.BOTTOM_LEFT) {
xx = x - bounds.getWidth() - 2.0;
yy = dataArea.getMaxY() - metrics.getDescent() - metrics.getLeading();
}
else if (position == MarkerLabelPosition.BOTTOM_RIGHT) {
xx = x + 2.0;
yy = dataArea.getMaxY() - metrics.getDescent() - metrics.getLeading();
}
g2.drawString(label, (int) xx, (int) yy);
}
}
/**
* Draws a horizontal line across the chart to represent a 'range marker'.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param rangeAxis the range axis.
* @param marker the marker line.
* @param dataArea the axis data area.
*/
public void drawRangeMarker(Graphics2D g2,
XYPlot plot,
ValueAxis rangeAxis,
Marker marker,
Rectangle2D dataArea) {
double value = marker.getValue();
Range range = rangeAxis.getRange();
if (!range.contains(value)) {
return;
}
double y = rangeAxis.translateValueToJava2D(marker.getValue(), dataArea,
plot.getRangeAxisEdge());
Line2D line = new Line2D.Double(dataArea.getMinX(), y, dataArea.getMaxX(), y);
Paint paint = marker.getOutlinePaint();
Stroke stroke = marker.getOutlineStroke();
g2.setPaint(paint != null ? paint : Plot.DEFAULT_OUTLINE_PAINT);
g2.setStroke(stroke != null ? stroke : Plot.DEFAULT_OUTLINE_STROKE);
g2.draw(line);
String label = marker.getLabel();
Font font = marker.getLabelFont();
MarkerLabelPosition position = marker.getLabelPosition();
if (label != null) {
g2.setFont(font);
FontRenderContext frc = g2.getFontRenderContext();
LineMetrics metrics = font.getLineMetrics(label, frc);
Rectangle2D bounds = font.getStringBounds(label, frc);
double xx = 0.0;
double yy = 0.0;
if (position == MarkerLabelPosition.TOP_LEFT) {
xx = dataArea.getMinX();
yy = y - metrics.getDescent() - metrics.getLeading();
}
else if (position == MarkerLabelPosition.TOP_RIGHT) {
xx = dataArea.getMaxX() - bounds.getWidth() - 2.0;
yy = y - metrics.getDescent() - metrics.getLeading();
}
else if (position == MarkerLabelPosition.BOTTOM_LEFT) {
xx = dataArea.getMinX();
yy = y + bounds.getHeight();
}
else if (position == MarkerLabelPosition.BOTTOM_RIGHT) {
xx = dataArea.getMaxX() - bounds.getWidth() - 2.0;
yy = y + bounds.getHeight();
}
g2.drawString(label, (int) xx, (int) yy);
}
}
/**
* Tests this renderer for equality with another object.
*
* @param obj the object.
*
* @return <code>true</code> or <code>false</code>.
*/
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj instanceof AbstractXYItemRenderer) {
AbstractXYItemRenderer renderer = (AbstractXYItemRenderer) obj;
boolean result = super.equals(obj);
if (this.toolTipGenerator != null) {
result = result && this.toolTipGenerator.equals(renderer.toolTipGenerator);
}
else {
result = result && (renderer.toolTipGenerator == null);
}
if (this.urlGenerator != null) {
result = result && this.urlGenerator.equals(renderer.urlGenerator);
}
else {
result = result && (renderer.urlGenerator == null);
}
return result;
}
return false;
}
/**
* Returns the drawing supplier from the plot.
*
* @return The drawing supplier (possibly <code>null</code>).
*/
public DrawingSupplier getDrawingSupplier() {
DrawingSupplier result = null;
XYPlot p = getPlot();
if (p != null) {
result = p.getDrawingSupplier();
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -