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