📄 valueaxis.java
字号:
/**
* Returns the minimum size allowed for the axis range when it is automatically calculated.
*
* @return the minimum range.
*/
public double getAutoRangeMinimumSize() {
return this.autoRangeMinimumSize;
}
/**
* Sets the auto range minimum size, with no other side effects.
*
* @param size the new size.
*/
public void setAutoRangeMinimumSize(double size) {
setAutoRangeMinimumSize(size, true);
}
/**
* Sets the minimum size allowed for the axis range when it is automatically calculated.
* <p>
* If requested, an {@link AxisChangeEvent} is forwarded to all registered listeners.
*
* @param size the new minimum.
* @param notify notify listeners?
*/
public void setAutoRangeMinimumSize(double size, boolean notify) {
// check argument...
if (size <= 0.0) {
throw new IllegalArgumentException(
"NumberAxis.setAutoRangeMinimumSize(double): must be > 0.0.");
}
// make the change...
if (autoRangeMinimumSize != size) {
this.autoRangeMinimumSize = size;
if (this.autoRange) {
autoAdjustRange();
}
if (notify) {
notifyListeners(new AxisChangeEvent(this));
}
}
}
/**
* Returns the margin (a percentage of the current range) by which the upper bound for the
* axis exceeds the maximum data value.
*
* @return the upper margin.
*/
public double getUpperMargin() {
return this.upperMargin;
}
/**
* Sets the upper margin for the axis, as a percentage of the current range.
* <P>
* This margin is added only when the axis range is auto-calculated.
* <P>
* The default is 5 percent.
*
* @param margin the new margin.
*/
public void setUpperMargin(double margin) {
this.upperMargin = margin;
if (isAutoRange()) {
autoAdjustRange();
}
notifyListeners(new AxisChangeEvent(this));
}
/**
* Returns the margin (a percentage of the current range) by which the lower bound for the
* axis is less than the minimum data value.
*
* @return the lower margin.
*/
public double getLowerMargin() {
return this.lowerMargin;
}
/**
* Sets the lower margin for the axis, as a percentage of the current range.
* <P>
* This margin is added only when the axis range is auto-calculated.
* <P>
* The default is 5 percent.
*
* @param margin the new margin.
*/
public void setLowerMargin(double margin) {
this.lowerMargin = margin;
if (isAutoRange()) {
autoAdjustRange();
}
notifyListeners(new AxisChangeEvent(this));
}
/**
* Returns the fixed auto range.
*
* @return the length.
*/
public double getFixedAutoRange() {
return this.fixedAutoRange;
}
/**
* Sets the fixed auto range for the axis.
*
* @param length the range length.
*/
public void setFixedAutoRange(double length) {
this.fixedAutoRange = length;
notifyListeners(new AxisChangeEvent(this));
}
/**
* Returns the minimum value for the axis.
*
* @return the minimum value for the axis.
*/
public double getMinimumAxisValue() {
return range.getLowerBound();
}
/**
* Sets the minimum value for the axis.
* <P>
* Registered listeners are notified that the axis has been modified.
*
* @param min the new minimum.
*/
public void setMinimumAxisValue(double min) {
if (this.range.getUpperBound() > min) {
setRange(new Range(min, this.range.getUpperBound()));
}
else {
setRange(new Range(min, min + 1.0));
}
}
/**
* Returns the maximum value for the axis.
*
* @return the maximum value.
*/
public double getMaximumAxisValue() {
return range.getUpperBound();
}
/**
* Sets the maximum value for the axis.
* <P>
* Registered listeners are notified that the axis has been modified.
*
* @param max the new maximum.
*/
public void setMaximumAxisValue(double max) {
setRange(new Range(range.getLowerBound(), max));
if (this.range.getLowerBound() < max) {
setRange(new Range(range.getLowerBound(), max));
}
else {
setRange(max - 1.0, max);
}
}
/**
* Returns the range for the axis.
*
* @return the axis range.
*/
public Range getRange() {
return this.range;
}
/**
* Sets the upper and lower bounds for the axis. Registered listeners are
* notified of the change.
* <P>
* As a side-effect, the auto-range flag is set to <code>false</code>.
*
* @param range the new range.
* @param turnOffAutoRange a flag that controls whether or not the auto range is turned off.
* @param notify a flag that controls whether or not listeners are notified.
*/
public void setRange(Range range, boolean turnOffAutoRange, boolean notify) {
// check arguments...
if (range == null) {
throw new IllegalArgumentException("ValueAxis.setRange(...): null not permitted.");
}
if (turnOffAutoRange) {
this.autoRange = false;
}
this.range = range;
if (notify) {
notifyListeners(new AxisChangeEvent(this));
}
}
/**
* Sets the range attribute.
*
* @param range the range.
*/
public void setRange(Range range) {
setRange(range, true, true);
}
/**
* Sets the axis range.
*
* @param lower the lower axis limit.
* @param upper the upper axis limit.
*/
public void setRange(double lower, double upper) {
setRange(new Range(lower, upper));
}
/**
* Sets the axis range, where the new range is 'size' in length, and centered on 'value'.
*
* @param value the central value.
* @param length the range length.
*/
public void setRangeAboutValue(double value, double length) {
setRange(new Range(value - length / 2, value + length / 2));
}
/**
* Returns a flag indicating whether or not the tick unit is automatically
* selected from a range of standard tick units.
*
* @return a flag indicating whether or not the tick unit is automatically selected.
*/
public boolean isAutoTickUnitSelection() {
return autoTickUnitSelection;
}
/**
* Sets a flag indicating whether or not the tick unit is automatically
* selected from a range of standard tick units. If the flag is changed, registered
* listeners are notified that the chart has changed.
*
* @param flag the new value of the flag.
*/
public void setAutoTickUnitSelection(boolean flag) {
setAutoTickUnitSelection(flag, true);
}
/**
* Sets a flag indicating whether or not the tick unit is automatically
* selected from a range of standard tick units.
*
* @param flag the new value of the flag.
* @param notify notify listeners?
*/
public void setAutoTickUnitSelection(boolean flag, boolean notify) {
if (this.autoTickUnitSelection != flag) {
this.autoTickUnitSelection = flag;
if (notify) {
notifyListeners(new AxisChangeEvent(this));
}
}
}
/**
* Returns the standard tick units for the axis.
* <P>
* If autoTickUnitSelection is on, the tick unit for the axis will be
* automatically selected from this collection.
*
* @return the standard tick units.
*/
public TickUnits getStandardTickUnits() {
return this.standardTickUnits;
}
/**
* Sets the collection of tick units for the axis, and notifies registered
* listeners that the axis has changed.
* <P>
* If the autoTickUnitSelection flag is true, a tick unit will be selected
* from this collection automatically (to ensure that labels do not
* overlap).
*
* @param collection the tick unit collection.
*/
public void setStandardTickUnits(TickUnits collection) {
this.standardTickUnits = collection;
notifyListeners(new AxisChangeEvent(this));
}
/**
* Converts a data value to a coordinate in Java2D space, assuming that the
* axis runs along one edge of the specified dataArea.
* <p>
* Note that it is possible for the coordinate to fall outside the plotArea.
*
* @param dataValue the data value.
* @param dataArea the area for plotting the data.
* @param edge the edge along which the axis lies.
*
* @return the Java2D coordinate.
*/
public abstract double translateValueToJava2D(double dataValue,
Rectangle2D dataArea,
RectangleEdge edge);
/**
* Converts a coordinate in Java2D space to the corresponding data value,
* assuming that the axis runs along one edge of the specified dataArea.
*
* @param java2DValue the coordinate in Java2D space.
* @param dataArea the area in which the data is plotted.
* @param edge the edge along which the axis lies.
*
* @return the data value.
*/
public abstract double translateJava2DtoValue(float java2DValue,
Rectangle2D dataArea,
RectangleEdge edge);
/**
* Automatically determines the maximum and minimum values on the axis to 'fit' the data.
*/
protected abstract void autoAdjustRange();
// /**
// * Sets the axis range so the the anchor value is in the middle of the axis,
// * and the overall range is equal to the value specified.
// *
// * @param range the range.
// */
// public void setAnchoredRange(double anchor, double range) {
//
// double min = this.anchorValue - range / 2;
// double max = this.anchorValue + range / 2;
// setRange(new Range(min, max));
//
// }
/**
* Centers the axis range about the specified value.
*
* @param value the center value.
*/
public void centerRange(double value) {
double central = range.getCentralValue();
Range adjusted = new Range(range.getLowerBound() + value - central,
range.getUpperBound() + value - central);
setRange(adjusted);
}
/**
* Increases or decreases the axis range by the specified percentage, about the
* central value.
* <P>
* To double the length of the axis range, use 200% (2.0).
* To halve the length of the axis range, use 50% (0.5).
*
* @param percent the resize factor.
*/
public void resizeRange(double percent) {
resizeRange(percent, range.getCentralValue());
}
/**
* Increases or decreases the axis range by the specified percentage, about the
* specified anchor value.
* <P>
* To double the length of the axis range, use 200% (2.0).
* To halve the length of the axis range, use 50% (0.5).
*
* @param percent the resize factor.
* @param anchorValue the new central value after the resize.
*/
public void resizeRange(double percent, double anchorValue) {
if (percent > 0.0) {
double halfLength = range.getLength() * percent / 2;
Range adjusted = new Range(anchorValue - halfLength, anchorValue + halfLength);
setRange(adjusted);
}
else {
setAutoRange(true);
}
}
/**
* Zooms in on the current range.
*
* @param lowerPercent the new lower bound.
* @param upperPercent the new upper bound.
*/
public void zoomRange(double lowerPercent, double upperPercent) {
double start = range.getLowerBound();
double length = range.getLength();
Range adjusted = new Range(start + length * lowerPercent, start + length * upperPercent);
setRange(adjusted);
}
/**
* Returns the auto tick index.
*
* @return the auto tick index.
*/
protected int getAutoTickIndex() {
return this.autoTickIndex;
}
/**
* Sets the auto tick index.
*
* @param index the new value.
*/
protected void setAutoTickIndex(int index) {
this.autoTickIndex = index;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -