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

📄 graph.~jav

📁 Java柱状图生成Applet
💻 ~JAV
字号:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class graph extends Applet {

String strParameter;
int cols;
int items;
double data[][];
double dataMax;
double dataMin;
double dataAbs;
final Color cb=new Color(0,0,100);
final Color cf=Color.yellow;
int w;//apple宽
int h;//apple高
int y0;//原点
int x0;//原点
int lenw;//横坐标长
int lenh;//纵坐标长
int sp;//余白
int spitem;//item间余白
int spcol;//col间余白
int hbarMax;//
int wbar;
Color citem[];
String itemname[];
String colname[];
Font font1;
Font font2;
Font font3;
Font font4;
String unit;

  public void init() {


    /////////定义颜色组/////////
    citem=new Color[9];
    citem[0]=new Color(107,163,246);
    citem[1]=new Color(0,200,0);

    citem[2]=new Color(230,0,0);
    citem[3]=Color.pink;
    citem[4]=Color.yellow;
    citem[5]=Color.cyan;
    citem[6]=Color.magenta;
    citem[7]=Color.white;
    

    font1=new Font("Times New Roman",1,18);//年度文字
    font2=new Font("Times New Roman",1,12);//棒上文字
    font3=new Font("Times New Roman",1,14);//图例文字
    font4=new Font("Times New Roman",0,11);//小文字
/*
    w=getSize().width;
    h=getSize().height;
    sp=w/20;
    spitem=5;
    spcol=20;
    x0=sp;
    y0=h-sp;
    lenw=w-x0-sp;
    lenh=y0-sp;
    hbarMax=lenh*3/4;

*/

    unit="";
    ////取得单位////////
     strParameter=getParameter("unit");
     if (strParameter!=null)
         unit=strParameter;
         else
         unit="10,000 yuan";
    ////取得图形年度数/////
     strParameter=getParameter("cols");
     if (strParameter!=null)
        cols=Integer.valueOf(strParameter).intValue();
     else
        cols=0;
    ////取得图形项目数////
     strParameter=getParameter("items");
     if (strParameter!=null)
        items=Integer.valueOf(strParameter).intValue();
     else
        items=0;

     if (items>0){

     //////取得项目名////////
     itemname=new String[items];
     strParameter=getParameter("itemname");
     for (int i=0;i<items;i++){
        itemname[i]=getdata(strParameter);
         strParameter=cutdata(strParameter);
         }
     System.out.println("ok");
     //////取得年度名//////////
     colname=new String[cols];
     strParameter=getParameter("colname");
      for (int i=0;i<cols;i++){
        colname[i]=getdata(strParameter);
         strParameter=cutdata(strParameter);
         }

      //wbar=(lenw-spcol*cols-spitem*cols*items)/cols/items;
     /////取得图形数据////////
     strParameter=getParameter("data");
     data=new double[items][cols];
     dataMax=0;
     dataMin=9999999;


     for (int i=0;i<items;i++)
          for (int j=0;j<cols;j++)
              {
              data[i][j]=Float.valueOf(getdata(strParameter)).floatValue();
              if (data[i][j]>dataMax)
                  dataMax=data[i][j];
              if (data[i][j]<dataMin)
                  dataMin=data[i][j];
              strParameter=cutdata(strParameter);
              }
     if (dataMax==0)
         dataMax=9999999;
     dataAbs=dataMax;
     if (dataMin<0)
         if (dataMax+dataMin<0)
            dataAbs=-dataMin;

    }//end if items>0
  }
 

  public void paint(Graphics g){

  setBackground(cb);
  setForeground(cf);

  if (items>0){

    w=getSize().width;
    h=getSize().height;
    sp=w/20;
    spitem=1;
    spcol=10;
    x0=sp;
    if (dataMin>0)
    y0=h-sp;
    else
    y0=(int)(h*dataMax/(dataMax-dataMin))-sp;
    lenw=w-x0-sp;
    lenh=y0-sp;
  
    //hbarMax=y0-lenh*(items+2)/20-sp;
    hbarMax=y0*(int)(dataAbs/dataMax)-lenh*(items+2)/20-sp;
    if(items>1)
    wbar=(lenw-spcol*cols-spitem*cols*items)/cols/items;
    else
    wbar=(lenw-spcol*cols-spitem*cols*items)/cols/items;


  g.drawLine(x0,y0,x0+lenw,y0);
  g.drawLine(x0,y0,x0,y0-lenh);
  //////////图例////////////////
  for (int i=0;i<items;i++){
  g.setColor(citem[i]);
  if (h<300)
    g.setFont(font4);
  else if (h>500)
    g.setFont(font1);
  else
    g.setFont(font3);

  g.fill3DRect(x0+lenw*3/5,sp+i*lenh/20,wbar,lenh/30,true);
  g.draw3DRect(x0+lenw*3/5,sp+i*lenh/20,wbar,lenh/30,true);
  g.setColor(cf);
  g.drawString(itemname[i],x0+lenw*3/5+wbar+spitem,sp+i*lenh/20+lenh/30);
  g.setFont(font2);
  }
  g.setColor(cf);

  ////////绘制棒图///////////////
  for (int i=0;i<items;i++)
          {
          for (int j=0;j<cols;j++)
              {
               drawbar(i,j,data[i][j],citem[i],g);
              }
          }
  /////////单位/////////////////
  g.setFont(font2);
  g.setColor(Color.yellow);
  g.drawString("単位:"+unit,x0+3,sp);
  /////////年度相关/////////////
  for( int i=0;i<cols;i++){
    g.drawLine(x0+i*(lenw/cols),y0,x0+i*(lenw/cols),y0+3);
    g.setFont(font1);
    g.drawString(colname[i],x0+spitem+i*(lenw/cols),y0+15);
    g.setFont(font2);
    }
    g.drawString("0",x0-spitem-5,y0);

  }//
  else
  {
   g.drawString("No Items Selected",40,20);
   }

  }//end paint()

  public String getdata(String stra){
         return stra.substring(0,stra.indexOf("/"));
         }

  public String cutdata(String stra){
         return stra.substring(stra.indexOf("/")+1);
         }

  public void drawbar(int item,int col,double bardata,Color cbar,Graphics g){
         g.setColor(cbar);
         if (bardata>0)
           g.fill3DRect(x0+col*lenw/cols+item*(wbar+spitem)+spitem,y0-(int)(bardata*hbarMax/dataAbs)-2,wbar,(int)(bardata*hbarMax/dataAbs),true);
         else
           g.fill3DRect(x0+col*lenw/cols+item*(wbar+spitem)+spitem,y0,wbar,-(int)(bardata*hbarMax/dataAbs),true);

         if (bardata>0)
           g.draw3DRect(x0+col*lenw/cols+item*(wbar+spitem)+spitem,y0-(int)(bardata*hbarMax/dataAbs)-2,wbar,(int)(bardata*hbarMax/dataAbs),true);
         else
           g.draw3DRect(x0+col*lenw/cols+item*(wbar+spitem)+spitem,y0,wbar,-(int)(bardata*hbarMax/dataAbs),true);

         if (bardata>0)
           g.drawString(String.valueOf((int)bardata),x0+col*lenw/cols+item*(wbar+spitem)+spitem,y0-(int)(bardata*hbarMax/dataAbs)-10);
         else
           g.drawString(String.valueOf((int)bardata),x0+col*lenw/cols+item*(wbar+spitem)+spitem,y0-(int)(bardata*hbarMax/dataAbs)+10);

        }


}

⌨️ 快捷键说明

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