📄 yaxis.java
字号:
package net.turbochen.graph;
import java.awt.*;
import net.turbochen.graph.util.*;
/**
* 绘制纵坐标轴,刻度及其网格线.
* @author Turbo Chen
*/
public class YAxis extends Axis
{
public YAxis(YScale scale,int tickCount)
{
this.scale = scale;
this.tickCount = tickCount;
}
public YAxis(YAxis peerAxis, YScale scale,int tickCount)
{
this(scale,tickCount);
this.peerAxis = peerAxis;
}
/**
* 绘制y轴线,刻度线及格线.
* @see net.turbochen.graph.ChartWidget#draw(Graphics)
*/
public void draw(Graphics g)
{
if ( ! (scale instanceof YScale) ) return;
int ticks = getTickCount();
int tickDist = (int)
Math.abs((double)(scale.getScreenMax() - scale.getScreenMin())/(double)(ticks+1));
int tickY = scale.getScreenMin();
int tickX = peerAxis.getScale().getScreenMin();
int gridLength = peerAxis.getScale().getScreenMax();
int axisLength = scale.getScreenMax();
g.setColor(axisColor);
g.drawLine(tickX, tickY, tickX, axisLength);
double vtickDist = (scale.getMax() - scale.getMin())/(ticks+1);
for ( int i = 0 ; i < ticks; i++ )
{
tickY = scale.getScreenMin()-tickDist*(i+1);
if ( isDrawGrid() )
{
g.setColor(gridColor);
g.drawLine(tickX, tickY , gridLength, tickY );
}
g.setColor(axisColor);
g.drawLine(tickX, tickY , tickX-tickLength, tickY);
String tickLabel = MathUtil.format(scale.getMin()+vtickDist*(i+1),"#.0");
int tickLabelWidth =
g.getFontMetrics().stringWidth(tickLabel);
g.drawString(tickLabel,
tickX-tickLength-tickLabelWidth,
tickY);
}
}
/* (non-Javadoc)
* @see net.turbochen.graph.Axis#calculateTickLabelSize(java.awt.Graphics)
*/
protected int calculateTickLabelSize(Graphics g)
{
int SPACE_WIDTH = 20;
int tickW =
g.getFontMetrics().stringWidth(MathUtil.format(scale.max,"#.0"));
return tickLength+tickW+SPACE_WIDTH;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -