⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curvechart.java

📁 用于显示适时的曲线图
💻 JAVA
字号:
import java.awt.*;
import java.applet.*;
import java.util.*;

class CurveChart extends Object
{
	Applet a;
	Axis Left;
	Axis Right;
	Axis Bottom;
	Axis Top;
	boolean AxisVisible[] = new boolean[4];
	
	Point LeftTop;
	Point RightBottom;
	int Width;
	int Height;

	String Title = new String("");
	boolean TitleVisible = true;
	Color TitleColor = Color.blue;
	Font TitleFont = new Font("Courier",Font.PLAIN,12);

	Point ChartLeftTop;
	Point ChartRightBottom;
	Point ChartOrigin = new Point(0,0);
	int ChartWidth;
	int ChartHeight;
	int LeftSpace = 50;
	int RightSpace = 50;
	int BottomSpace = 50;
	int TopSpace = 50;
	int Space = 10;

	Color BackgroundColor = Color.white;
	Color GridColor = Color.lightGray;

	Vector SeriesList = new Vector();
	Legend SeriesLegend ;
	
	CurveChart(Applet a,Point lt, Point rb)
	{
		this.a = a;
		LeftTop = lt;
		RightBottom = rb;
		Width = RightBottom.x - LeftTop.x;
		Height = RightBottom.y - LeftTop.y;
		try
		{
			SeriesLegend = new Legend(a); 
			Left = new Axis(a,0,new Point(lt.x+LeftSpace,lt.y+TopSpace),new Point(lt.x+LeftSpace,rb.y-BottomSpace));
			Bottom = new Axis(a,1,new Point(lt.x+LeftSpace,rb.y-BottomSpace), new Point(rb.x-RightSpace,rb.y-BottomSpace));
			Right = new Axis(a,2,new Point(rb.x-RightSpace,lt.y+TopSpace),new Point(rb.x-RightSpace,rb.y-BottomSpace));
			Top = new Axis(a,3,new Point(lt.x+LeftSpace,lt.y+TopSpace), new Point(rb.x-RightSpace,lt.y+TopSpace));
		}
		catch(Exception e)
		{
			System.out.println(e);
		}
	}
	void setTitle(String s)
	{
		Title = s;
	}
	void setAxisVisible(boolean l, boolean b, boolean r, boolean t)
	{
		AxisVisible[0] = l; AxisVisible[1] = b; AxisVisible[2] = r; AxisVisible[3] = t;
	}
	int getSeriesCount()
	{
		return SeriesList.size();
	}
	void addSeries(Series t)
	{
		t.setOrigin(ChartOrigin);
		SeriesList.addElement(t);
	}
	void addSeries()
	{
		Series t = new Series();
		t.setOrigin(ChartOrigin);
		SeriesList.addElement(t);
	}
	void clearSeries()
	{
		SeriesList.removeAllElements();
		SeriesLegend.clear();
	}
	Series getSeries(int i)
	{
		if(i>SeriesList.size() || i<0)
			return null;
		else
			return (Series)SeriesList.elementAt(i);
	}
	void drawGrid(Graphics g)
	{
		int i;
		int t;
		// = a.getGraphics();
		g.setColor(GridColor);
		for(i=1;i<Left.getTickCount();i++)
		{
     		t = Left.getTickPosition(i);
			g.drawLine(LeftTop.x+LeftSpace,t,RightBottom.x-RightSpace,t);
		}
		for(i=1;i<Bottom.getTickCount();i++)
		{
     		t = Bottom.getTickPosition(i);
			g.drawLine(t,LeftTop.y+TopSpace,t,RightBottom.y-BottomSpace);
		}
	}
	void drawLegend()
	{
	}
	void drawCurveChart(Graphics g)
	{
		int i;
		int j;
		Left.Visible = AxisVisible[0];
		Bottom.Visible = AxisVisible[1];
		Right.Visible = AxisVisible[2];
		Top.Visible = AxisVisible[3];

		// = a.getGraphics();
		g.setColor(BackgroundColor);
		g.fillRect(LeftTop.x, LeftTop.y, Width, Height);
	
		SeriesLegend.clear();
		for(i=0; i<SeriesList.size(); i++)
		{
			SeriesLegend.addLegend(((Series)SeriesList.elementAt(i)).getTitle(),((Series)SeriesList.elementAt(i)).color);
		}
		setSpace(g);
		Point lt = LeftTop;
		Point rb = RightBottom;
		try
		{
			Left.setPosition(new Point(lt.x+LeftSpace,lt.y+TopSpace),new Point(lt.x+LeftSpace,rb.y-BottomSpace));
			Bottom.setPosition(new Point(lt.x+LeftSpace,rb.y-BottomSpace), new Point(rb.x-RightSpace,rb.y-BottomSpace));
			//Right.setPosition(new Point(rb.x-RightSpace,lt.y+TopSpace),new Point(rb.x-RightSpace,rb.y-BottomSpace));
			//Top.setPosition(new Point(lt.x+LeftSpace,lt.y+TopSpace), new Point(rb.x-RightSpace,lt.y+TopSpace));
		}
		catch(Exception e)
		{

		}
		drawGrid(g);
		g.setClip(lt.x+LeftSpace,lt.y+TopSpace,Bottom.getLength(),Left.getLength());
		for(i=0; i<SeriesList.size(); i++)
		{
				((Series)SeriesList.elementAt(i)).setOrigin(ChartOrigin);
				((Series)SeriesList.elementAt(i)).setMap(Bottom.getMap(), Left.getMap());
				((Series)SeriesList.elementAt(i)).setMaxMinX(Bottom.getMax(), Bottom.getMin());
				((Series)SeriesList.elementAt(i)).setMaxMinY(Left.getMax(), Left.getMin());
				((Series)SeriesList.elementAt(i)).draw(g);
		}
		g.setClip(LeftTop.x,LeftTop.y,Width,Height);
		g.setColor(Right.LineColor);
		g.drawLine(rb.x-RightSpace,lt.y+TopSpace,rb.x-RightSpace,rb.y-BottomSpace);
		g.setColor(Top.LineColor);
		g.drawLine(lt.x+LeftSpace,lt.y+TopSpace,rb.x-RightSpace,lt.y+TopSpace);
		if(AxisVisible[0])		Left.draw(g);
		if(AxisVisible[1])		Bottom.draw(g);
		if(AxisVisible[2])		Right.draw(g);
		if(AxisVisible[3])		Top.draw(g);
		SeriesLegend.draw(g);
		g.setColor(TitleColor);
		g.setFont(TitleFont);
		g.drawString(Title,LeftTop.x+(Width-RightSpace+10)/2-g.getFontMetrics().stringWidth(Title)/2,LeftTop.y+15+g.getFont().getSize());
	}
	void setSpace(Graphics g)
	{
		//s g = a.getGraphics();
		LeftSpace = Left.getLabelWidth()+5+Width/40+Space;
		RightSpace = Right.getLabelWidth()+Width/40+Space+SeriesLegend.getWidth()+5;
		g.setFont(TitleFont);
		TopSpace = Right.getLabelWidth()+Height/40+g.getFont().getSize()+20;
		BottomSpace = Right.getLabelHeight()+13+Height/40;
		SeriesLegend.setPoint(RightBottom.x-SeriesLegend.getWidth()-12,LeftTop.y+TopSpace+10);
		ChartOrigin.x = LeftTop.x+LeftSpace;
		ChartOrigin.y = RightBottom.y-BottomSpace;
	}
};

⌨️ 快捷键说明

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