📄 lineandshaperenderer.html
字号:
<FONT color="green">582</FONT> *<a name="line.582"></a><FONT color="green">583</FONT> * @param flag the flag.<a name="line.583"></a><FONT color="green">584</FONT> */<a name="line.584"></a><FONT color="green">585</FONT> public void setBaseShapesFilled(boolean flag) {<a name="line.585"></a><FONT color="green">586</FONT> this.baseShapesFilled = flag;<a name="line.586"></a><FONT color="green">587</FONT> }<a name="line.587"></a><FONT color="green">588</FONT> <a name="line.588"></a><FONT color="green">589</FONT> /**<a name="line.589"></a><FONT color="green">590</FONT> * Returns <code>true</code> if the renderer should use the fill paint <a name="line.590"></a><FONT color="green">591</FONT> * setting to fill shapes, and <code>false</code> if it should just<a name="line.591"></a><FONT color="green">592</FONT> * use the regular paint.<a name="line.592"></a><FONT color="green">593</FONT> * <a name="line.593"></a><FONT color="green">594</FONT> * @return A boolean.<a name="line.594"></a><FONT color="green">595</FONT> */<a name="line.595"></a><FONT color="green">596</FONT> public boolean getUseFillPaint() {<a name="line.596"></a><FONT color="green">597</FONT> return this.useFillPaint;<a name="line.597"></a><FONT color="green">598</FONT> }<a name="line.598"></a><FONT color="green">599</FONT> <a name="line.599"></a><FONT color="green">600</FONT> /**<a name="line.600"></a><FONT color="green">601</FONT> * Sets the flag that controls whether the fill paint is used to fill <a name="line.601"></a><FONT color="green">602</FONT> * shapes, and sends a {@link RendererChangeEvent} to all <a name="line.602"></a><FONT color="green">603</FONT> * registered listeners.<a name="line.603"></a><FONT color="green">604</FONT> * <a name="line.604"></a><FONT color="green">605</FONT> * @param flag the flag.<a name="line.605"></a><FONT color="green">606</FONT> */<a name="line.606"></a><FONT color="green">607</FONT> public void setUseFillPaint(boolean flag) {<a name="line.607"></a><FONT color="green">608</FONT> this.useFillPaint = flag;<a name="line.608"></a><FONT color="green">609</FONT> notifyListeners(new RendererChangeEvent(this));<a name="line.609"></a><FONT color="green">610</FONT> }<a name="line.610"></a><FONT color="green">611</FONT> <a name="line.611"></a><FONT color="green">612</FONT> /**<a name="line.612"></a><FONT color="green">613</FONT> * Returns a legend item for a series.<a name="line.613"></a><FONT color="green">614</FONT> *<a name="line.614"></a><FONT color="green">615</FONT> * @param datasetIndex the dataset index (zero-based).<a name="line.615"></a><FONT color="green">616</FONT> * @param series the series index (zero-based).<a name="line.616"></a><FONT color="green">617</FONT> *<a name="line.617"></a><FONT color="green">618</FONT> * @return The legend item.<a name="line.618"></a><FONT color="green">619</FONT> */<a name="line.619"></a><FONT color="green">620</FONT> public LegendItem getLegendItem(int datasetIndex, int series) {<a name="line.620"></a><FONT color="green">621</FONT> <a name="line.621"></a><FONT color="green">622</FONT> CategoryPlot cp = getPlot();<a name="line.622"></a><FONT color="green">623</FONT> if (cp == null) {<a name="line.623"></a><FONT color="green">624</FONT> return null;<a name="line.624"></a><FONT color="green">625</FONT> }<a name="line.625"></a><FONT color="green">626</FONT> <a name="line.626"></a><FONT color="green">627</FONT> if (isSeriesVisible(series) && isSeriesVisibleInLegend(series)) {<a name="line.627"></a><FONT color="green">628</FONT> CategoryDataset dataset;<a name="line.628"></a><FONT color="green">629</FONT> dataset = cp.getDataset(datasetIndex);<a name="line.629"></a><FONT color="green">630</FONT> String label = getLegendItemLabelGenerator().generateLabel(<a name="line.630"></a><FONT color="green">631</FONT> dataset, series<a name="line.631"></a><FONT color="green">632</FONT> );<a name="line.632"></a><FONT color="green">633</FONT> String description = label;<a name="line.633"></a><FONT color="green">634</FONT> String toolTipText = null; <a name="line.634"></a><FONT color="green">635</FONT> if (getLegendItemToolTipGenerator() != null) {<a name="line.635"></a><FONT color="green">636</FONT> toolTipText = getLegendItemToolTipGenerator().generateLabel(<a name="line.636"></a><FONT color="green">637</FONT> dataset, series<a name="line.637"></a><FONT color="green">638</FONT> ); <a name="line.638"></a><FONT color="green">639</FONT> }<a name="line.639"></a><FONT color="green">640</FONT> String urlText = null;<a name="line.640"></a><FONT color="green">641</FONT> if (getLegendItemURLGenerator() != null) {<a name="line.641"></a><FONT color="green">642</FONT> urlText = getLegendItemURLGenerator().generateLabel(<a name="line.642"></a><FONT color="green">643</FONT> dataset, series<a name="line.643"></a><FONT color="green">644</FONT> ); <a name="line.644"></a><FONT color="green">645</FONT> }<a name="line.645"></a><FONT color="green">646</FONT> Shape shape = getSeriesShape(series);<a name="line.646"></a><FONT color="green">647</FONT> Paint paint = getSeriesPaint(series);<a name="line.647"></a><FONT color="green">648</FONT> Paint fillPaint = (this.useFillPaint <a name="line.648"></a><FONT color="green">649</FONT> ? getItemFillPaint(series, 0) : paint);<a name="line.649"></a><FONT color="green">650</FONT> boolean shapeOutlineVisible = this.drawOutlines;<a name="line.650"></a><FONT color="green">651</FONT> Paint outlinePaint = (this.useOutlinePaint <a name="line.651"></a><FONT color="green">652</FONT> ? getItemOutlinePaint(series, 0) : paint);<a name="line.652"></a><FONT color="green">653</FONT> Stroke outlineStroke = getSeriesOutlineStroke(series);<a name="line.653"></a><FONT color="green">654</FONT> boolean lineVisible = getItemLineVisible(series, 0);<a name="line.654"></a><FONT color="green">655</FONT> boolean shapeVisible = getItemShapeVisible(series, 0);<a name="line.655"></a><FONT color="green">656</FONT> return new LegendItem(label, description, toolTipText, <a name="line.656"></a><FONT color="green">657</FONT> urlText, shapeVisible, shape, getItemShapeFilled(series, 0),<a name="line.657"></a><FONT color="green">658</FONT> fillPaint, shapeOutlineVisible, outlinePaint, outlineStroke,<a name="line.658"></a><FONT color="green">659</FONT> lineVisible, new Line2D.Double(-7.0, 0.0, 7.0, 0.0),<a name="line.659"></a><FONT color="green">660</FONT> getItemStroke(series, 0), getItemPaint(series, 0));<a name="line.660"></a><FONT color="green">661</FONT> }<a name="line.661"></a><FONT color="green">662</FONT> return null;<a name="line.662"></a><FONT color="green">663</FONT> <a name="line.663"></a><FONT color="green">664</FONT> }<a name="line.664"></a><FONT color="green">665</FONT> <a name="line.665"></a><FONT color="green">666</FONT> /**<a name="line.666"></a><FONT color="green">667</FONT> * This renderer uses two passes to draw the data.<a name="line.667"></a><FONT color="green">668</FONT> * <a name="line.668"></a><FONT color="green">669</FONT> * @return The pass count (<code>2</code> for this renderer).<a name="line.669"></a><FONT color="green">670</FONT> */<a name="line.670"></a><FONT color="green">671</FONT> public int getPassCount() {<a name="line.671"></a><FONT color="green">672</FONT> return 2; <a name="line.672"></a><FONT color="green">673</FONT> }<a name="line.673"></a><FONT color="green">674</FONT> <a name="line.674"></a><FONT color="green">675</FONT> /**<a name="line.675"></a><FONT color="green">676</FONT> * Draw a single data item.<a name="line.676"></a><FONT color="green">677</FONT> *<a name="line.677"></a><FONT color="green">678</FONT> * @param g2 the graphics device.<a name="line.678"></a><FONT color="green">679</FONT> * @param state the renderer state.<a name="line.679"></a><FONT color="green">680</FONT> * @param dataArea the area in which the data is drawn.<a name="line.680"></a><FONT color="green">681</FONT> * @param plot the plot.<a name="line.681"></a><FONT color="green">682</FONT> * @param domainAxis the domain axis.<a name="line.682"></a><FONT color="green">683</FONT> * @param rangeAxis the range axis.<a name="line.683"></a><FONT color="green">684</FONT> * @param dataset the dataset.<a name="line.684"></a><FONT color="green">685</FONT> * @param row the row index (zero-based).<a name="line.685"></a><FONT color="green">686</FONT> * @param column the column index (zero-based).<a name="line.686"></a><FONT color="green">687</FONT> * @param pass the pass index.<a name="line.687"></a><FONT color="green">688</FONT> */<a name="line.688"></a><FONT color="green">689</FONT> public void drawItem(Graphics2D g2, CategoryItemRendererState state,<a name="line.689"></a><FONT color="green">690</FONT> Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis,<a name="line.690"></a><FONT color="green">691</FONT> ValueAxis rangeAxis, CategoryDataset dataset, int row, int column,<a name="line.691"></a><FONT color="green">692</FONT> int pass) {<a name="line.692"></a><FONT color="green">693</FONT> <a name="line.693"></a><FONT color="green">694</FONT> // do nothing if item is not visible<a name="line.694"></a><FONT color="green">695</FONT> if (!getItemVisible(row, column)) {<a name="line.695"></a><FONT color="green">696</FONT> return; <a name="line.696"></a><FONT color="green">697</FONT> }<a name="line.697"></a><FONT color="green">698</FONT> <a name="line.698"></a><FONT color="green">699</FONT> // do nothing if both the line and shape are not visible<a name="line.699"></a><FONT color="green">700</FONT> if (!getItemLineVisible(row, column) <a name="line.700"></a><FONT color="green">701</FONT> && !getItemShapeVisible(row, column)) {<a name="line.701"></a><FONT color="green">702</FONT> return;<a name="line.702"></a><FONT color="green">703</FONT> }<a name="line.703"></a><FONT color="green">704</FONT> <a name="line.704"></a><FONT color="green">705</FONT> // nothing is drawn for null...<a name="line.705"></a><FONT color="green">706</FONT> Number v = dataset.getValue(row, column);<a name="line.706"></a><FONT color="green">707</FONT> if (v == null) {<a name="line.707"></a><FONT color="green">708</FONT> return;<a name="line.708"></a><FONT color="green">709</FONT> }<a name="line.709"></a><FONT color="green">710</FONT> <a name="line.710"></a><FONT color="green">711</FONT> PlotOrientation orientation = plot.getOrientation();<a name="line.711"></a><FONT color="green">712</FONT> <a name="line.712"></a><FONT color="green">713</FONT> // current data point...<a name="line.713"></a><FONT color="green">714</FONT> double x1 = domainAxis.getCategoryMiddle(column, getColumnCount(), <a name="line.714"></a><FONT color="green">715</FONT> dataArea, plot.getDomainAxisEdge());<a name="line.715"></a><FONT color="green">716</FONT> double value = v.doubleValue();<a name="line.716"></a><FONT color="green">717</FONT> double y1 = rangeAxis.valueToJava2D(value, dataArea, <a name="line.717"></a><FONT color="green">718</FONT> plot.getRangeAxisEdge());<a name="line.718"></a><FONT color="green">719</FONT> <a name="line.719"></a><FONT color="green">720</FONT> if (pass == 0 && getItemLineVisible(row, column)) {<a name="line.720"></a><FONT color="green">721</FONT> if (column != 0) {<a name="line.721"></a><FONT color="green">722</FONT> Number previousValue = dataset.getValue(row, column - 1);<a name="line.722"></a><FONT color="green">723</FONT> if (previousValue != null) {<a name="line.723"></a><FONT color="green">724</FONT> // previous data point...<a name="line.724"></a><FONT color="green">725</FONT> double previous = previousValue.doubleValue();<a name="line.725"></a><FONT color="green">726</FONT> double x0 = domainAxis.getCategoryMiddle(column - 1, <a name="line.726"></a><FONT color="green">727</FONT>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -