📄 categoryplot.java
字号:
* @param index the axis index. * @param location the location. * @param notify notify listeners? */ public void setRangeAxisLocation(int index, AxisLocation location, boolean notify) { // TODO: don't allow null for index = 0 this.rangeAxisLocations.set(index, location); if (notify) { notifyListeners(new PlotChangeEvent(this)); } } /** * Returns the edge where the primary range axis is located. * * @return The edge (never <code>null</code>). */ public RectangleEdge getRangeAxisEdge() { return getRangeAxisEdge(0); } /** * Returns the edge for a range axis. * * @param index the axis index. * * @return The edge. */ public RectangleEdge getRangeAxisEdge(int index) { AxisLocation location = getRangeAxisLocation(index); RectangleEdge result = Plot.resolveRangeAxisLocation(location, this.orientation); if (result == null) { result = RectangleEdge.opposite(getRangeAxisEdge(0)); } return result; } /** * Clears the range axes from the plot and sends a {@link PlotChangeEvent} to all * registered listeners. */ public void clearRangeAxes() { for (int i = 0; i < this.rangeAxes.size(); i++) { ValueAxis axis = (ValueAxis) this.rangeAxes.get(i); if (axis != null) { axis.removeChangeListener(this); } } this.rangeAxes.clear(); notifyListeners(new PlotChangeEvent(this)); } /** * Configures the range axes. */ public void configureRangeAxes() { for (int i = 0; i < this.rangeAxes.size(); i++) { ValueAxis axis = (ValueAxis) this.rangeAxes.get(i); if (axis != null) { axis.configure(); } } } /** * Returns the primary dataset for the plot. * * @return The primary dataset (possibly <code>null</code>). */ public CategoryDataset getDataset() { return getDataset(0); } /** * Returns a dataset. * * @param index the dataset index. * * @return The dataset (possibly <code>null</code>). */ public CategoryDataset getDataset(int index) { CategoryDataset result = null; if (this.datasets.size() > index) { result = (CategoryDataset) this.datasets.get(index); } return result; } /** * Sets the dataset for the plot, replacing the existing dataset, if there is one. This * method also calls the {@link #datasetChanged(DatasetChangeEvent)} method, which adjusts the * axis ranges if necessary and sends a {@link PlotChangeEvent} to all registered listeners. * * @param dataset the dataset (<code>null</code> permitted). */ public void setDataset(CategoryDataset dataset) { setDataset(0, dataset); } /** * Sets a dataset for the plot. * * @param index the dataset index. * @param dataset the dataset (<code>null</code> permitted). */ public void setDataset(int index, CategoryDataset dataset) { CategoryDataset existing = (CategoryDataset) this.datasets.get(index); if (existing != null) { existing.removeChangeListener(this); } this.datasets.set(index, dataset); if (dataset != null) { dataset.addChangeListener(this); } // send a dataset change event to self... DatasetChangeEvent event = new DatasetChangeEvent(this, dataset); datasetChanged(event); } /** * Maps a dataset to a particular domain axis. * * @param index the dataset index (zero-based). * @param axisIndex the axis index (zero-based). */ public void mapDatasetToDomainAxis(int index, int axisIndex) { this.datasetToDomainAxisMap.set(index, new Integer(axisIndex)); // fake a dataset change event to update axes... datasetChanged(new DatasetChangeEvent(this, getDataset(index))); } /** * Returns the domain axis for a dataset. You can change the axis for a dataset using the * mapDatasetToDomainAxis() method. * * @param index the dataset index. * * @return The domain axis. */ public CategoryAxis getDomainAxisForDataset(int index) { CategoryAxis result = getDomainAxis(); Integer axisIndex = (Integer) this.datasetToDomainAxisMap.get(index); if (axisIndex != null) { result = getDomainAxis(axisIndex.intValue()); } return result; } /** * Maps a dataset to a particular range axis. * * @param index the dataset index (zero-based). * @param axisIndex the axis index (zero-based). */ public void mapDatasetToRangeAxis(int index, int axisIndex) { this.datasetToRangeAxisMap.set(index, new Integer(axisIndex)); // fake a dataset change event to update axes... datasetChanged(new DatasetChangeEvent(this, getDataset(index))); } /** * Returns the range axis for a dataset. You can change the axis for a dataset using the * mapDatasetToRangeAxis() method. * * @param index the dataset index. * * @return The range axis. */ public ValueAxis getRangeAxisForDataset(int index) { ValueAxis result = getRangeAxis(); Integer axisIndex = (Integer) this.datasetToRangeAxisMap.get(index); if (axisIndex != null) { result = getRangeAxis(axisIndex.intValue()); } return result; } /** * Returns a reference to the renderer for the plot. * * @return The renderer. */ public CategoryItemRenderer getRenderer() { return getRenderer(0); } /** * Returns a renderer. * * @param index the renderer index. * * @return The renderer (possibly <code>null</code>). */ public CategoryItemRenderer getRenderer(int index) { CategoryItemRenderer result = null; if (this.renderers.size() > index) { result = (CategoryItemRenderer) this.renderers.get(index); } return result; } /** * Sets the renderer at index 0 (sometimes referred to as the "primary" renderer) and * sends a {@link PlotChangeEvent} to all registered listeners. * * @param renderer the renderer (<code>null</code> permitted. */ public void setRenderer(CategoryItemRenderer renderer) { setRenderer(0, renderer, true); } /** * Sets the renderer at index 0 (sometimes referred to as the "primary" renderer) and, * if requested, sends a {@link PlotChangeEvent} to all registered listeners. * <p> * You can set the renderer to <code>null</code>, but this is not recommended because: * <ul> * <li>no data will be displayed;</li> * <li>the plot background will not be painted;</li> * </ul> * * @param renderer the renderer (<code>null</code> permitted). * @param notify notify listeners? */ public void setRenderer(CategoryItemRenderer renderer, boolean notify) { setRenderer(0, renderer, notify); } /** * Sets the renderer at the specified index and sends a {@link PlotChangeEvent} to all * registered listeners. * * @param index the index. * @param renderer the renderer (<code>null</code> permitted). */ public void setRenderer(int index, CategoryItemRenderer renderer) { setRenderer(index, renderer, true); } /** * Sets a renderer. A {@link PlotChangeEvent} is sent to all registered listeners. * * @param index the index. * @param renderer the renderer (<code>null</code> permitted). * @param notify notify listeners? */ public void setRenderer(int index, CategoryItemRenderer renderer, boolean notify) { // stop listening to the existing renderer... CategoryItemRenderer existing = (CategoryItemRenderer) this.renderers.get(index); if (existing != null) { existing.removeChangeListener(this); } // register the new renderer... this.renderers.set(index, renderer); if (renderer != null) { renderer.setPlot(this); renderer.addChangeListener(this); } configureDomainAxes(); configureRangeAxes(); if (notify) { notifyListeners(new PlotChangeEvent(this)); } } /** * Returns the renderer for the specified dataset. * * @param d the dataset (<code>null</code> permitted). * * @return the renderer (possibly <code>null</code>). */ public CategoryItemRenderer getRendererForDataset(CategoryDataset d) { CategoryItemRenderer result = null; for (int i = 0; i < this.datasets.size(); i++) { if (this.datasets.get(i) == d) { result = (CategoryItemRenderer) this.renderers.get(i); break; } } return result; } /** * Returns the dataset rendering order. * * @return The order (never <code>null</code>). */ public DatasetRenderingOrder getDatasetRenderingOrder() { return this.renderingOrder; } /** * Sets the rendering order and sends a {@link PlotChangeEvent} to all registered listeners. * By default, the plot renders the primary dataset last (so that * the primary dataset overlays the secondary datasets). You can reverse this if you want to. * * @param order the rendering order (<code>null</code> not permitted). */ public void setDatasetRenderingOrder(DatasetRenderingOrder order) { if (order == null) { throw new IllegalArgumentException("Null 'order' argument."); } this.renderingOrder = order; notifyListeners(new PlotChangeEvent(this)); } /** * Returns the order in which the columns are rendered. * * @return The order. */ public SortOrder getColumnRenderingOrder() { return this.columnRenderingOrder; } /** * Sets the order in which the columns should be rendered. * * @param order the order. */ public void setColumnRenderingOrder(SortOrder order) { this.columnRenderingOrder = order; } /** * Returns the order in which the rows should be rendered. * * @return the order (never <code>null</code>). */ public SortOrder getRowRenderingOrder() { return this.rowRenderingOrder; } /** * Sets the order in which the rows should be rendered. * * @param order the order (<code>null</code> not allowed). */ public void setRowRenderingOrder(SortOrder order) { if (order == null) { throw new IllegalArgumentException("Null 'order' argument."); } this.rowRenderingOrder = order; } /** * Returns the flag that controls whether the domain grid-lines are visible. * * @return the <code>true</code> or <code>false</code>. */ public boolean isDomainGridlinesVisible() { return this.domainGridlinesVisible; } /** * Sets the flag that controls whether or not grid-lines are drawn against the domain axis. * <p> * If the flag value changes, a {@link PlotChangeEvent} is sent to all registered listeners. * * @param visible the new value of the flag. */ public void setDomainGridlinesVisible(boolean visible) { if (this.domainGridlinesVisible != visible) { this.domainGridlinesVisible = visible; notifyListeners(new PlotChangeEvent(this)); } } /** * Returns the position used for the domain gridlines. * * @return The gridline position. */ public CategoryAnchor getDomainGridlinePosition() { return this.domainGridlinePosition; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -