📄 abstractcategoryitemrenderer.java
字号:
/**
* Sets the base item URL generator.
*
* @param generator the item URL generator.
*/
public void setBaseItemURLGenerator(CategoryURLGenerator generator) {
this.baseItemURLGenerator = generator;
}
/**
* Returns the number of rows in the dataset. This value is updated in the
* {@link AbstractCategoryItemRenderer#initialise} method.
*
* @return the row count.
*/
public int getRowCount() {
return this.rowCount;
}
/**
* Returns the number of columns in the dataset. This value is updated in the
* {@link AbstractCategoryItemRenderer#initialise} method.
*
* @return the column count.
*/
public int getColumnCount() {
return this.columnCount;
}
/**
* Initialises the renderer.
* <P>
* Stores a reference to the {@link ChartRenderingInfo} object (which might be
* <code>null</code>), and then sets the useCategoriesPaint flag according to the special case
* conditions a) there is only one series and b) the categoriesPaint array is not null.
*
* @param g2 the graphics device.
* @param dataArea the data area.
* @param plot the plot.
* @param info an object for returning information about the structure of the chart
* (<code>null</code> permitted).
*
*/
public void initialise(Graphics2D g2, Rectangle2D dataArea,
CategoryPlot plot, ChartRenderingInfo info) {
setPlot(plot);
CategoryDataset data = plot.getDataset();
if (data != null) {
this.rowCount = data.getRowCount();
this.columnCount = data.getColumnCount();
}
else {
this.rowCount = 0;
this.columnCount = 0;
}
setInfo(info);
}
/**
* Returns the range type for the renderer.
* <p>
* The default implementation returns <code>STANDARD</code>, subclasses may override this
* behaviour.
* <p>
* The {@link CategoryPlot} uses this information when auto-calculating the range for the axis.
*
* @return the range type.
*/
public RangeType getRangeType() {
return RangeType.STANDARD;
}
/**
* Draws a background for the data area. The default implementation just gets the plot to
* draw the outline, but some renderers will override this behaviour.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param dataArea the data area.
*/
public void drawBackground(Graphics2D g2,
CategoryPlot plot,
Rectangle2D dataArea) {
plot.drawBackground(g2, dataArea);
}
/**
* Draws an outline for the data area. The default implementation just gets the plot to
* draw the outline, but some renderers will override this behaviour.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param dataArea the data area.
*/
public void drawOutline(Graphics2D g2,
CategoryPlot plot,
Rectangle2D dataArea) {
plot.drawOutline(g2, dataArea);
}
/**
* Draws a grid line against the domain axis.
* <P>
* Note that this default implementation assumes that the horizontal axis is the domain axis.
* If this is not the case, you will need to override this method.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param dataArea the area for plotting data (not yet adjusted for any 3D effect).
* @param value the Java2D value at which the grid line should be drawn.
*/
public void drawDomainGridline(Graphics2D g2,
CategoryPlot plot,
Rectangle2D dataArea,
double value) {
Line2D line = null;
PlotOrientation orientation = plot.getOrientation();
if (orientation == PlotOrientation.HORIZONTAL) {
line = new Line2D.Double(dataArea.getMinX(), value, dataArea.getMaxX(), value);
}
else if (orientation == PlotOrientation.VERTICAL) {
line = new Line2D.Double(value, dataArea.getMinY(), value, dataArea.getMaxY());
}
Paint paint = plot.getDomainGridlinePaint();
if (paint == null) {
paint = CategoryPlot.DEFAULT_GRIDLINE_PAINT;
}
g2.setPaint(paint);
Stroke stroke = plot.getDomainGridlineStroke();
if (stroke == null) {
stroke = CategoryPlot.DEFAULT_GRIDLINE_STROKE;
}
g2.setStroke(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,
CategoryPlot 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.getRangeAxisEdge());
Line2D line = null;
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();
if (paint == null) {
paint = CategoryPlot.DEFAULT_GRIDLINE_PAINT;
}
g2.setPaint(paint);
Stroke stroke = plot.getRangeGridlineStroke();
if (stroke == null) {
stroke = CategoryPlot.DEFAULT_GRIDLINE_STROKE;
}
g2.setStroke(stroke);
g2.draw(line);
}
/**
* Draws a marker for the range axis.
* <P>
* A marker is a constant value, usually represented by a line.
*
* @param g2 the graphics device.
* @param plot the plot.
* @param axis the range axis.
* @param marker the marker to be drawn.
* @param dataArea the area inside the axes.
*/
public void drawRangeMarker(Graphics2D g2,
CategoryPlot plot,
ValueAxis axis,
Marker marker,
Rectangle2D dataArea) {
double value = marker.getValue();
Range range = axis.getRange();
if (!range.contains(value)) {
return;
}
PlotOrientation orientation = plot.getOrientation();
double v = axis.translateValueToJava2D(value, dataArea, plot.getRangeAxisEdge());
Line2D line = null;
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 = marker.getOutlinePaint();
if (paint == null) {
paint = Plot.DEFAULT_OUTLINE_PAINT;
}
g2.setPaint(paint);
Stroke stroke = marker.getOutlineStroke();
if (stroke == null) {
stroke = Plot.DEFAULT_OUTLINE_STROKE;
}
g2.setStroke(stroke);
g2.draw(line);
}
/**
* Returns a legend item for a series.
*
* @param datasetIndex the dataset index (zero-based).
* @param series the series index (zero-based).
*
* @return the legend item.
*/
public LegendItem getLegendItem(int datasetIndex, int series) {
CategoryPlot plot = (CategoryPlot) getPlot();
if (plot == null) {
return null;
}
CategoryDataset dataset;
if (datasetIndex == 0) {
dataset = plot.getDataset();
}
else {
dataset = plot.getSecondaryDataset(datasetIndex - 1);
}
String label = dataset.getRowKey(series).toString();
String description = label;
Shape shape = getSeriesShape(series);
Paint paint = getSeriesPaint(series);
Paint outlinePaint = getSeriesOutlinePaint(series);
Stroke stroke = getSeriesStroke(series);
return new LegendItem(label, description,
shape, paint, outlinePaint, stroke);
}
/**
* 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) {
boolean result = super.equals(obj);
if (obj instanceof AbstractCategoryItemRenderer) {
AbstractCategoryItemRenderer r = (AbstractCategoryItemRenderer) obj;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -