defaultintervalcategorydataset.java

来自「JfreeChart 常用图表例子」· Java 代码 · 共 756 行 · 第 1/2 页

JAVA
756
字号
    /**     * Returns a list of the categories in the dataset.     * <P>     * Supports the CategoryDataset interface.     *     * @return A list of the categories in the dataset.     */    public List getColumnKeys() {        // the CategoryDataset interface expects a list of categories, but        // we've stored them in an array...        if (this.categoryKeys == null) {            return new ArrayList();        }        else {            return Collections.unmodifiableList(                Arrays.asList(this.categoryKeys)            );        }    }    /**     * Sets the categories for the dataset.     *     * @param categoryKeys  an array of objects representing the categories in      *                      the dataset.     */    public void setCategoryKeys(Comparable[] categoryKeys) {        // check arguments...        if (categoryKeys == null) {            throw new IllegalArgumentException("Null 'categoryKeys' argument.");        }        if (categoryKeys.length != this.startData[0].length) {            throw new IllegalArgumentException(                "The number of categories does not match the data."            );        }        for (int i = 0; i < categoryKeys.length; i++) {            if (categoryKeys[i] == null) {                throw new IllegalArgumentException(                    "DefaultIntervalCategoryDataset.setCategoryKeys(): "                    + "null category not permitted.");            }        }        // make the change...        this.categoryKeys = categoryKeys;        fireDatasetChanged();    }    /**     * Returns the data value for one category in a series.     * <P>     * This method is part of the CategoryDataset interface.  Not particularly     * meaningful for this class...returns the end value.     * @param series    The required series (zero based index).     * @param category  The required category.     * @return The data value for one category in a series (null possible).     */    public Number getValue(Comparable series, Comparable category) {        int seriesIndex = getSeriesIndex(series);        int itemIndex = getItem(category);        return getValue(seriesIndex, itemIndex);    }    /**     * Returns the data value for one category in a series.     * <P>     * This method is part of the CategoryDataset interface.  Not particularly     * meaningful for this class...returns the end value.     *     * @param series  the required series (zero based index).     * @param category  the required category.     *     * @return The data value for one category in a series (null possible).     */    public Number getValue(int series, int category) {        return getEndValue(series, category);    }    /**     * Returns the start data value for one category in a series.     *     * @param series  the required series.     * @param category  the required category.     *     * @return The start data value for one category in a series      *         (possibly <code>null</code>).     */    public Number getStartValue(Comparable series, Comparable category) {        int seriesIndex = getSeriesIndex(series);        int itemIndex = getItem(category);        return getStartValue(seriesIndex, itemIndex);    }    /**     * Returns the start data value for one category in a series.     *     * @param series  the required series (zero based index).     * @param category  the required category.     *     * @return The start data value for one category in a series      *         (possibly <code>null</code>).     */    public Number getStartValue(int series, int category) {        // check arguments...        if ((series < 0) || (series >= getSeriesCount())) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.getValue(): "                + "series index out of range.");        }        if ((category < 0) || (category >= getCategoryCount())) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.getValue(): "                + "category index out of range.");        }        // fetch the value...        return this.startData[series][category];    }    /**     * Returns the end data value for one category in a series.     *     * @param series  the required series.     * @param category  the required category.     *     * @return The end data value for one category in a series (null possible).     */    public Number getEndValue(Comparable series, Comparable category) {        int seriesIndex = getSeriesIndex(series);        int itemIndex = getItem(category);        return getEndValue(seriesIndex, itemIndex);    }    /**     * Returns the end data value for one category in a series.     *     * @param series  the required series (zero based index).     * @param category  the required category.     *     * @return The end data value for one category in a series (null possible).     */    public Number getEndValue(int series, int category) {        // check arguments...        if ((series < 0) || (series >= getSeriesCount())) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.getValue(): "                + "series index out of range.");        }        if ((category < 0) || (category >= getCategoryCount())) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.getValue(): "                + "category index out of range.");        }        // fetch the value...        return this.endData[series][category];    }    /**     * Sets the start data value for one category in a series.     *      * @param series  the series (zero-based index).     * @param category  the category.     *      * @param value The value.     */    public void setStartValue(int series, Object category, Number value) {        // does the series exist?        if ((series < 0) || (series > getSeriesCount())) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.setValue: "                + "series outside valid range.");        }        // is the category valid?        int categoryIndex = getCategoryIndex(category);        if (categoryIndex < 0) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.setValue: "                + "unrecognised category.");        }        // update the data...        this.startData[series][categoryIndex] = value;        fireDatasetChanged();    }    /**     * Sets the end data value for one category in a series.     *     * @param series  the series (zero-based index).     * @param category  the category.     *     * @param value the value.     */    public void setEndValue(int series, Object category, Number value) {        // does the series exist?        if ((series < 0) || (series > getSeriesCount())) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.setValue: "                + "series outside valid range.");        }        // is the category valid?        int categoryIndex = getCategoryIndex(category);        if (categoryIndex < 0) {            throw new IllegalArgumentException(                "DefaultIntervalCategoryDataset.setValue: "                + "unrecognised category.");        }        // update the data...        this.endData[series][categoryIndex] = value;        fireDatasetChanged();    }    /**     * Returns the index for the given category.     *     * @param category  the category.     *     * @return The index.     */    private int getCategoryIndex(Object category) {        int result = -1;        for (int i = 0; i < this.categoryKeys.length; i++) {            if (category.equals(this.categoryKeys[i])) {                result = i;                break;            }        }        return result;    }    /**     * Generates an array of keys, by appending a space plus an integer     * (starting with 1) to the supplied prefix string.     *     * @param count  the number of keys required.     * @param prefix  the name prefix.     *     * @return An array of <i>prefixN</i> with N = { 1 .. count}.     */    private Comparable[] generateKeys(int count, String prefix) {        Comparable[] result = new Comparable[count];        String name;        for (int i = 0; i < count; i++) {            name = prefix + (i + 1);            result[i] = name;        }        return result;    }    /**     * Returns a column key.     *     * @param item  the column index.     *     * @return The column key.     */    public Comparable getColumnKey(int item) {        return this.categoryKeys[item];    }    /**     * Returns a column index.     *     * @param columnKey  the column key.     *     * @return The column index.     */    public int getColumnIndex(Comparable columnKey) {        List categories = getCategories();        return categories.indexOf(columnKey);    }    /**     * Returns a row index.     *     * @param rowKey  the row key.     *     * @return The row index.     */    public int getRowIndex(Comparable rowKey) {        List seriesKeys = getSeries();        return seriesKeys.indexOf(rowKey);    }    /**     * Returns a list of the series in the dataset.     * <P>     * Supports the CategoryDataset interface.     *     * @return A list of the series in the dataset.     */    public List getRowKeys() {        // the CategoryDataset interface expects a list of series, but        // we've stored them in an array...        if (this.seriesKeys == null) {            return new java.util.ArrayList();        }        else {            return Collections.unmodifiableList(Arrays.asList(this.seriesKeys));        }    }    /**     * Returns the name of the specified series.     *     * @param series  the index of the required series (zero-based).     *     * @return The name of the specified series.     */    public Comparable getRowKey(int series) {        if ((series >= getSeriesCount()) || (series < 0)) {            throw new IllegalArgumentException(                "DefaultCategoryDataset.getSeriesName(int): no such series.");        }        return this.seriesKeys[series];    }    /**     * Returns the number of categories in the dataset.  This method is part of      * the {@link CategoryDataset} interface.     *     * @return The number of categories in the dataset.     */    public int getColumnCount() {        int result = 0;        if (this.startData != null) {            if (getSeriesCount() > 0) {                result = this.startData[0].length;            }        }        return result;    }    /**     * Returns the number of series in the dataset (possibly zero).     *     * @return The number of series in the dataset.     */    public int getRowCount() {        int result = 0;        if (this.startData != null) {            result = this.startData.length;        }        return result;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?