国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 13:25:29
字體:
來源:轉載
供稿:網友

  在前面,我用多線程寫了一個繪制了股票K線圖的程序.這里我再通過繪制一個成交量的統計圖說明對鼠票事件的應用.這里我們要傳入幾個參數:
  
  
  
  
  
  
  
  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.  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  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  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  if(result  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;
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴里| 齐河县| 柳州市| 呼玛县| 建水县| 灵石县| 临西县| 保德县| 永宁县| 芒康县| 河间市| 罗田县| 新蔡县| 五原县| 阳新县| 东山县| 忻州市| 灵石县| 巨野县| 延庆县| 龙山县| 宁津县| 武陟县| 河北区| 西乌珠穆沁旗| 江孜县| 象山县| 元谋县| 蓬安县| 右玉县| 乐陵市| 介休市| 敦煌市| 绥中县| 潜山县| 朝阳区| 惠水县| 满洲里市| 湟源县| 曲阳县| 宿松县|