📄 valueaxis.java
字号:
/**
* Sets the stroke used to draw the axis line. An {@link AxisChangeEvent} is sent to all
* registered listeners.
*
* @param stroke the stroke.
*/
public void setAxisLineStroke(Stroke stroke) {
this.axisLineStroke = stroke;
notifyListeners(new AxisChangeEvent(this));
}
/**
* Draws an axis line at the current cursor position and edge.
*
* @param g2 the graphics device.
* @param cursor the cursor position.
* @param dataArea the data area.
* @param edge the edge.
*/
protected void drawAxisLine(Graphics2D g2, double cursor,
Rectangle2D dataArea, RectangleEdge edge) {
Line2D axisLine = null;
if (edge == RectangleEdge.TOP) {
axisLine = new Line2D.Double(dataArea.getX(), cursor, dataArea.getMaxX(), cursor);
}
else if (edge == RectangleEdge.BOTTOM) {
axisLine = new Line2D.Double(dataArea.getX(), cursor, dataArea.getMaxX(), cursor);
}
else if (edge == RectangleEdge.LEFT) {
axisLine = new Line2D.Double(cursor, dataArea.getY(), cursor, dataArea.getMaxY());
}
else if (edge == RectangleEdge.RIGHT) {
axisLine = new Line2D.Double(cursor, dataArea.getY(), cursor, dataArea.getMaxY());
}
g2.setPaint(this.axisLinePaint);
g2.draw(axisLine);
if (this.positiveArrowVisible) {
double x = 0.0;
double y = 0.0;
Shape arrow = null;
if (edge == RectangleEdge.TOP || edge == RectangleEdge.BOTTOM) {
x = dataArea.getMaxX();
y = cursor;
arrow = this.rightArrow;
}
else if (edge == RectangleEdge.LEFT || edge == RectangleEdge.RIGHT) {
x = cursor;
y = dataArea.getMinY();
arrow = this.upArrow;
}
// draw an arrow at the positive end...
AffineTransform transformer = new AffineTransform();
transformer.setToTranslation(x, y);
Shape shape = transformer.createTransformedShape(arrow);
g2.fill(shape);
g2.draw(shape);
}
if (this.negativeArrowVisible) {
double x = 0.0;
double y = 0.0;
Shape arrow = null;
if (edge == RectangleEdge.TOP || edge == RectangleEdge.BOTTOM) {
x = dataArea.getMinX();
y = cursor;
arrow = this.leftArrow;
}
else if (edge == RectangleEdge.LEFT || edge == RectangleEdge.RIGHT) {
x = cursor;
y = dataArea.getMaxY();
arrow = this.downArrow;
}
// draw an arrow at the positive end...
AffineTransform transformer = new AffineTransform();
transformer.setToTranslation(x, y);
Shape shape = transformer.createTransformedShape(arrow);
g2.fill(shape);
g2.draw(shape);
}
}
/**
* Returns a flag that controls the direction of values on the axis.
* <P>
* For a regular axis, values increase from left to right (for a horizontal
* axis) and bottom to top (for a vertical axis). When the axis is
* 'inverted', the values increase in the opposite direction.
*
* @return the flag.
*/
public boolean isInverted() {
return this.inverted;
}
/**
* Sets a flag that controls the direction of values on the axis, and
* notifies registered listeners that the axis has changed.
*
* @param flag the flag.
*/
public void setInverted(boolean flag) {
if (this.inverted != flag) {
this.inverted = flag;
notifyListeners(new AxisChangeEvent(this));
}
}
/**
* Returns true if the axis range is automatically adjusted to fit the data.
*
* @return the auto-range flag.
*/
public boolean isAutoRange() {
return autoRange;
}
/**
* Sets a flag that determines whether or not the axis range is
* automatically adjusted to fit the data, and notifies registered
* listeners that the axis has been modified.
*
* @param auto the new value of the flag.
*/
public void setAutoRange(boolean auto) {
setAutoRange(auto, true);
}
/**
* Sets the auto range attribute. If the <code>notify</code> flag is set, an
* {@link AxisChangeEvent} is sent to registered listeners.
*
* @param auto the new value of the flag.
* @param notify notify listeners?
*/
protected void setAutoRange(boolean auto, boolean notify) {
if (this.autoRange != auto) {
this.autoRange = auto;
if (this.autoRange) {
autoAdjustRange();
}
if (notify) {
notifyListeners(new AxisChangeEvent(this));
}
}
}
/**
* 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.
*
* @deprecated Use getLowerBound().
*/
public double getMinimumAxisValue() {
return getLowerBound();
}
/**
* Returns the lower bound of the axis range.
*
* @return The lower bound.
*/
public double getLowerBound() {
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.
*
* @deprecated Use setLowerBound(...).
*/
public void setMinimumAxisValue(double min) {
setLowerBound(min);
}
/**
* Sets the lower bound for the axis range. An {@link AxisChangeEvent} is sent
* to all registered listeners.
*
* @param min the new minimum.
*/
public void setLowerBound(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.
*
* @deprecated Use getUpperBound().
*/
public double getMaximumAxisValue() {
return getUpperBound();
}
/**
* Returns the upper bound for the axis range.
*
* @return The upper bound.
*/
public double getUpperBound() {
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.
*
* @deprecated Use setUpperBound(...).
*/
public void setMaximumAxisValue(double max) {
setUpperBound(max);
}
/**
* Sets the upper bound for the axis range. An {@link AxisChangeEvent} is sent
* to all registered listeners.
*
* @param max the new maximum.
*/
public void setUpperBound(double 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;
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -