<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      java繪制一個成交量的統計圖

      [摘要]在前面,我用多線程寫了一個繪制了股票K線圖的程序.這里我再通過繪制一個成交量的統計圖說明對鼠票事件的應用.這里我們要傳入幾個參數:<applet code="sellhis.clas...
      在前面,我用多線程寫了一個繪制了股票K線圖的程序.這里我再通過繪制一個成交量的統計圖說明對鼠票事件的應用.這里我們要傳入幾個參數:
      <applet code="sellhis.class" Archive="sellhis.jar" width="640" height="400">
      <Param name="itemmonth" value="200201">
      <Param name="itemcode" value="00002,00014,00019,00023,00041,00102,00113,00114,
      00129,00132,00142,00146,00179,00203,00213,00223,00341">
      <Param name="itemval" value="272950,193950,1015600,142700,1618500,671650,
      2453300,630150,28375,1827660,7700,75700,27375,3375600,47500,17500,17500">
      <Param name="itempce" value="219,156,817,114,2302,540,1974,507,22,
      1471,6,60,22,4717,38,114,14">
      </applet>
      查看演示
      sellhis.java源程序如下:
      import java.awt.*;
      import java.applet.*;
      import java.awt.font.*;
      import java.awt.event.*;
      import java.io.*;
      import java.lang.*;
      import java.util.*;



      public class sellhis extends Applet{
        static int Len;
        int leftMargine=50;
        int rightMargine=20;
        int topMargine=80;
        int buttomMargine=20;
        int width,height,w,h;
        int minStickLength=3;  //坐標的短刻度
        int majStickLength=8;   //坐標的長刻度
        int minStick=10;
        int majStick;
        String title;
        String xTitle="股票代碼";
        String xCode[];
        float yData[],xPce[];
        String MaxPce;
        boolean Mouse_Move;
        int x0,y0,X,Y,hx,hy;
        Label label[]=new Label[3];
        boolean mouse_move=false;
        public void init() {
          width=this.getBounds().width;
          height=this.getBounds().height;
          w=width-leftMargine-rightMargine;
          h=height-topMargine-buttomMargine;
          setSize(width,height);
          Color bc=new Color(229,229,229);
          setBackground(bc);
          setLayout(null);
          for(int I=0;I<3;I++){
            label[I]=new Label();
            label[I].setForeground(Color.blue);
            this.add(label[I]);
            if(I==0)
              label[I].reshape(75,topMargine-25,60,15);
            if(I==1)
              label[I].reshape(230,topMargine-25,80,15);
            if(I==2)
              label[I].reshape(505,topMargine-25,60,15);
          }
          try{
            title=getTitle(getParameter("itemmonth"));
          }
          catch(Exception e){
            System.out.println("Param itemmonth error!");
         System.out.println(e);
      }
          try{
            xCode=Subicode(getParameter("itemcode"));
            Len=xCode.length;
            hx=w/Len;
          }
          catch(Exception e){
            System.out.println("Param itemcode error!");
         System.out.println(e);
      }
          try{
            yData=Substr(getParameter("itemval"));
          }
          catch(Exception e){
            System.out.println("Param itemval error!");
         System.out.println(e);
      }
          try{
            xPce=Substr(getParameter("itempce"));
            MaxPce=getMaxVal(xPce);
            majStick=Integer.parseInt(MaxPce.substring(0,1))+2; //取最大pce的最大整數
          }
          catch(Exception e){
            System.out.println("Param itempce error!");
         System.out.println(e);
      }
          try{
            addMouseListener(new MouseAdapter(){
              public void mouseReleased(MouseEvent evt){//檢測釋放鼠標按鍵事件
                setCursor(Cursor.getDefaultCursor());
                Point ioc=evt.getPoint();
                X=ioc.x;         //把當前座標傳遞給另一線程
                Y=ioc.y;
                //repaint();
              }
            });
         addMouseMotionListener(new MouseMotionAdapter(){
              public void mouseDragged(MouseEvent evt){
                Point ioc=evt.getPoint();
                if((ioc.x>leftMargine & ioc.x< w+leftMargine) & (ioc.y >topMargine & ioc.y< h+topMargine))
                  setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                else
                  setCursor(Cursor.getDefaultCursor());
              }
              public void mouseMoved(MouseEvent evt){   //檢測鼠標移動事件
                Point ioc=evt.getPoint();
                X=ioc.x;
                Y=ioc.y;
                Graphics gten;
                gten=getGraphics();
                gten.setXORMode(Color.white);
                gten.setColor(Color.blue);
                int Axsis;


                if(ioc.x >leftMargine & ioc.x< w+leftMargine & ioc.y>topMargine & ioc.y<h+topMargine){
                  try{
                     Axsis=(X-leftMargine)/hx;        //設定橫座標范圍
                      //在以下區域內,把鼠標當前橫座標處的各種股票參數顯示在相應的標簽上
                       label[0].setText(xCode[Axsis]);
                       label[1].setText(Float.toString(yData[Axsis]));
                       float pcent=(xPce[Axsis]/100);
                       label[2].setText(Float.toString(pcent));
                  }
                  catch(Exception err){
                  }
                  try{
                    if(y0 >topMargine & y0< h+topMargine)
                      gten.drawLine(leftMargine,y0,w+leftMargine,y0);
                    if(Y >topMargine & Y< h+topMargine)
                      gten.drawLine(leftMargine,Y,w+leftMargine,Y);
                    if(x0 >leftMargine & x0< w+leftMargine)
                      gten.drawLine(x0,topMargine,x0,h+topMargine);
                    if(X >leftMargine & X< w+leftMargine)
                      gten.drawLine(X,topMargine,X,h+topMargine);
                    x0=X;
                    y0=Y;
                  }
                  finally{
                    gten.dispose();
                  }
                }
              }
            });
      }
      catch(Exception e)
      {
        System.out.println("sellhis construct add mouse listener error!");
        System.out.println(e);
      }
        }
        public void paint(Graphics g){
          try{
            g.drawString("股票代碼:",20,topMargine-15);
            g.drawString("賣空成交金額:",150,topMargine-15);
            g.drawString("賣空成交金額占總賣空成交金額%:",320,topMargine-15);



            g.drawRect(leftMargine,topMargine,w,h); //矩形方框



            int x0,y0,x1,y1,dy;
            int totalStick=(majStick-1)*minStick;
            x0=leftMargine;
            dy=h/((majStick-1)*minStick);
            for(int I=1;I<=totalStick;I++){
              y0=height-buttomMargine-I*dy;
              y1=y0;
              x1=x0-minStickLength;
              if(I%minStick==0){
                x1=x0-majStickLength;
                g.drawString(""+((I)/minStick)+"0%",x1-25,y0+5);    //y軸刻度數字
              }
              g.drawLine(x0,y0,x1,y1);  //y軸刻度標
            }
            for(int I=0;I<Len;I++){
              x0=leftMargine+I*hx;
              hy=(int)((xPce[I]/100)*(h/((majStick-1)*10)));
              y0=height-buttomMargine-hy;
              float pcent=(xPce[I]/100);
              Color pceCololr=new Color(153,0,153);
              g.setColor(pceCololr);
              g.setFont(new Font("Times New Roman",Font.PLAIN,11));
              g.drawString(Float.toString(pcent),x0,y0-5);//在柱狀圖上繪制%
              if(I%2==0)
                g.setColor(Color.orange);
              else
                g.setColor(Color.red);
              g.fillRect(x0,y0,hx,hy);  //繪制柱狀圖
              //g.setColor(Color.red);  //繪制股票代碼
              //g.setFont(new Font("Times New Roman",Font.PLAIN,10));
              //g.drawString(""+xCode[I],x0,height-topMargine+40);
            }
            Color titleColor=new Color(0,64,128);
            g.setColor(titleColor);
            g.setFont(new Font("monospaced",Font.BOLD,20));
            g.drawString(title,190,40);
          }
          catch(Exception e){
            System.out.println("sellhis paint error.");
            System.out.println(e);
          }
        }
        public static float[] Substr(String str){
          int I=0;
          StringTokenizer st = new StringTokenizer(str,",");
          int len=st.countTokens();
          float[] val=new float[len];
          while(st.hasMoreTokens()) {
            val[I]=Integer.parseInt(st.nextToken());
            I++;
          }
          return val;
        }
        public static String[] Subicode(String str){
          int I=0;
          StringTokenizer st = new StringTokenizer(str,",");
          int len=st.countTokens();
          String[] val=new String[len];
          while(st.hasMoreTokens()) {
            val[I]=st.nextToken();
            I++;
          }
          return val;
        }
        public static String getMaxVal(float[] Maxval){
          int I;
          float result;
          result=Maxval[0];
          for(I=0;I<Maxval.length;I++){
            if(result<Maxval[I])
              result=Maxval[I];
          }
          return Float.toString(result);
        }
        public String getTitle(String str){
          String title;
          title=str.substring(0,4)+"年"+str.substring(4,6)+"月賣空股票統計";
          return title;
        }
        public int getLeftMargine(){
          return leftMargine;
        }
        public int getButtomMargine(){
          return buttomMargine;
        }
        public void setLeftMargine(int leftMargine){
          this.leftMargine=leftMargine;
        }
        public void setButtomMargine(int buttomMargine){
          this.buttomMargine=buttomMargine;
        }
      }


      日韩精品一区二区三区高清