亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graphpanel.java

?? 著名IT公司ILog的APS高級排產優化引擎
?? JAVA
字號:
package com.power.util.graph2D;

import javax.swing.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;

import com.power.pipeengine.EngineUI.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: Paraster,Inc.</p>
 * @author  Charoes Huang
 * @version 1.0
 */

public class graphPanel extends JPanel {
/**
 *   the original point of the axis
 */
    private Point2D original = null;
/**
 *  the original data
 */
    private Vector pointVect = null;
/**
 *  converted vector according to  the axis' scale
 */
    private Vector convertedPointVect = null;
/**
 *  X axis
 */
    private axis xAxis = null ;
/**
 *  Y axis
 */
    private axis yAxis = null ;
/**
 *  the max Integer data
 */
    private double xMax = Double.NEGATIVE_INFINITY,yMax = Double.NEGATIVE_INFINITY;
    private double xMin = Double.POSITIVE_INFINITY, yMin = Double.POSITIVE_INFINITY;
    private boolean minOrMaxChanged = false;
/**
 *  the size of the panel
 */
    private Dimension dimension;

    private Graphics myPen ;

    private Line2D.Double tmpLine = new Line2D.Double();
/*************
 * construtor
 **********/
 /**
  * the basic constructor method
  */
    public graphPanel(){
      super();
      this.xAxis = new axis() ;
      this.yAxis = new axis(1) ;
      this.pointVect = new Vector();
      this.convertedPointVect = new Vector();
    }
    /**
     *  the constructor with two parameters
     * @param original the origianl point of the axises
     * @param d the Dimension the JPanel
     */
    public graphPanel(Point2D original,Dimension d){

        this.dimension = d;
        this.original = original;
        this.xAxis = new axis() ;
        this.yAxis = new axis(1) ;

        xAxis.setAxisLength(d.getWidth()-original.getX()-20);
        yAxis.setAxisLength(original.getY()-40 );

        xAxis.setOriginal(original);
        yAxis.setOriginal(original);

		this.setLocation( (int) original.getX(), (int) original.getY() );
		this.setSize( d );
        this.pointVect = new Vector();
   }
   /**
    *   the constructor with three parameters
    * @param original the original point of the axises
    * @param vect the data vector
    * @param d the Dimension of the JPanel
    */
   public graphPanel(Point2D original,Vector vect,Dimension d){

        this.dimension= d;
        this.pointVect= vect ;
        this.original = original;
        this.xAxis = new axis() ;
        this.yAxis = new axis(1) ;

        xAxis.setAxisLength(d.getWidth()-original.getX()-20);
        yAxis.setAxisLength(original.getY()-20 );

        xAxis.setOriginal(original);
        yAxis.setOriginal(original);
   }

   public axis getXAxis() {
      return this.xAxis;
   }

   public axis getYAxis() {
      return this.yAxis;
   }

/******
 * methods
 **********/
 /**
  *  set the Data Vector.
  * @param vect
  */
   public void setPointVect(Vector vect){
        this.pointVect = vect ;
   }
   /**
    * get the data vector
    * @return
    */
   public Vector getPointVect(){
        return this.pointVect ;
   }
   /**
    * set the axis  color
    * @param c
    */
   public void setAxisColor(Color c){
        xAxis.setAxisColor(c);
        yAxis.setAxisColor(c);
   }

   public void setOrigin( Point2D point ) {
      this.original = point;
      xAxis.setOriginal(original);
      yAxis.setOriginal(original);
   }

   public void setDimension( Dimension size ) {
      this.dimension = size;
      setAxises();
   }

   private void setAxises() {
      xAxis.setAxisLength(dimension.getWidth()-original.getX()-20);
      yAxis.setAxisLength(original.getY()-20 );
   }

   private void setMinAndMax( Vector points ) {
      Enumeration allPoints = points.elements();

      this.xMax = 0.0;
      this.yMax = 0.0;

      this.xMin = Double.POSITIVE_INFINITY;
      this.yMin = Double.POSITIVE_INFINITY;

      while( allPoints.hasMoreElements() ) {
          Point2D.Double aPoint = (Point2D.Double) allPoints.nextElement();
          if( aPoint.getX() > this.xMax ) {
            this.xMax = aPoint.getX();
          }

          if( aPoint.getY() > this.yMax ) {
            this.yMax = aPoint.getY();
          }

          if( aPoint.getX() < this.xMin ) {
            this.xMin = aPoint.getX();
          }

          if( aPoint.getY() < this.yMin ) {
            this.yMin = aPoint.getY();
          }
      }

    if( this.xMax < 10.0 ) {
        this.xMax = 10.0;
        this.xMin = 0.0;
    }
    if( this.yMax < 10.0 ) {
        this.yMax = 10.0;
        this.yMin = 0.0;
    }

    //Avoid the case where xMin = xMax and yMin = yMax.
    if( this.xMin <= 1.01 * this.xMax &&
        this.xMin >= 0.99 * this.xMax ) {
        if( this.xMax > 0 ) {
          this.xMin = 0.9 * this.xMax;
        } else {
          this.xMin = 1.1 * this.xMax;
        }
    }

    if( this.yMin <= 1.01 * this.yMax &&
        this.yMin >= 0.99 * this.yMax ) {
          if( this.yMax > 0 ) {
            this.yMin = 0.9 * this.yMax;
          } else {
            this.yMin = 1.1 * this.yMax;
          }
    }

  }

   /**
    * the vector convert method
    * @param vect
    * @return vector
    */

  protected void convert(Vector vect){
    try{
    double xRatio = ( this.xMax - this.xMin ) / xAxis.getAxisLength()  ;
    double yRatio = ( this.yMax - this.yMin ) / yAxis.getAxisLength()  ;

    Iterator pointIter = vect.iterator() ;
    Iterator convertedPoints = convertedPointVect.iterator();
    while(pointIter.hasNext()){
      Point2D.Double point = (Point2D.Double)pointIter.next() ;
      Point2D.Double convertedPoint = (Point2D.Double) convertedPoints.next() ;
      double x = ( point.getX() - this.xMin ) / xRatio +original.getX();
      double y = original.getY() - ( point.getY() - this.yMin ) /yRatio;
      //newpoint = new Point2D.Double( ( point.getX() - this.xMin ) / xRatio +original.getX(),
                                    // original.getY() - ( point.getY() - this.yMin ) /yRatio );
      convertedPoint.setLocation ( x, y );

      //convertedVect.add(newpoint);
    }

  }catch(Exception e){
    System.out.println(e.toString());
  }
       //return convertedPointVect;
  }

  private void convert(Point2D inPoint, Point2D outPoint ){
      double xRatio = ( this.xMax - this.xMin ) / xAxis.getAxisLength()  ;
      double yRatio = ( this.yMax - this.yMin ) / yAxis.getAxisLength()  ;

      outPoint.setLocation( ( inPoint.getX() - this.xMin ) / xRatio +original.getX(),
                                       original.getY() - ( inPoint.getY() - this.yMin ) /yRatio );

  }

  private double getMaxInt(double d){
    int i=0;
    while(d>10){
      d=d/10;
      i++;
    }
     return ((int)d+1)*Math.pow(10,i);
  }
  /**
   *    draw the components to the container.
   * @param g
   */
  public void paintComponent(Graphics g){
    myPen = g ;
    super.paintComponent(g);

    xAxis.drawAxis(g);
    yAxis.drawAxis(g);

    Graphics2D g2= (Graphics2D) g ;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);

    g2.setFont(new Font("",Font.PLAIN ,9));
    //g2.drawString(java.lang.String .valueOf(0) ,(float)original.getX() ,(float)original.getY()+10);

    drawDataLine(g);
    drawLabel(g);
  }
  /**
   *  draw the data line
   * @param g
   */
   private void drawDataLine(Graphics g){
    try {
        if( this.pointVect.size() == 0 ) return;
           Graphics2D g2=(Graphics2D) g ;

           Iterator pointIter = this.convertedPointVect.iterator() ;
           //Iterator pointIter = convert(this.pointVect).iterator() ;
           //Point2D point1= original;
           Point2D point1 = (Point2D)pointIter.next();
           g2.setColor(Color.blue);
           while( pointIter.hasNext() ){
              Point2D point2 = (Point2D)pointIter.next();
              g2.drawRect((int)point2.getX(),(int)point2.getY(),2,2);
              //g2.drawOval((int)point2.getX(),(int)point2.getY(),2,2);
              //Line2D line = new Line2D.Double(point1,point2);
              tmpLine.setLine( point1.getX(), point1.getY(), point2.getX(), point2.getY() );
              point1 = point2 ;

              g2.draw(tmpLine);
           }
    } catch ( Exception e ) {
        //concurrent modification exception, does not matter here.
    }
  }
  /**
   *  draw the label
   * @param g
   */
  private void drawLabel(Graphics g){
    if( this.pointVect.size() == 0 ) return;
    Graphics2D g2=(Graphics2D) g ;
    int xlabel_count = xAxis.getLabelCount();
    int ylabel_count = yAxis.getLabelCount();
    double xlength = xAxis.getAxisLength();
    double ylength = yAxis.getAxisLength();
    double xlabel_step = xlength / xlabel_count ;
    double ylabel_step = ylength / ylabel_count ;
    double xValueStep = ( this.xMax - this.xMin ) / 10;
    double yValueStep = ( this.yMax - this.yMin ) / 10;

    int xStrLengthOffset = String.valueOf( (int) this.xMax ).length();
    if( xStrLengthOffset < String.valueOf( (int) this.xMin ).length() ) {
        xStrLengthOffset = String.valueOf( (int) Math.abs(this.xMin ) ).length();
    }

    xStrLengthOffset -= 3;

    int yStrLengthOffset = String.valueOf( (int) this.yMax ).length();
    if( yStrLengthOffset < String.valueOf( (int) this.yMin ).length() ) {
        yStrLengthOffset = String.valueOf( (int) Math.abs(this.yMin ) ).length();
    }

    yStrLengthOffset -= 3;

    int i=0,j=0;
    while( i < xlabel_count ){
      String str = String.valueOf( (int)( this.xMin + xValueStep * i ) );
      if( str.length() > xStrLengthOffset && xStrLengthOffset > 0 ) {
        str = str.substring( 0, str.length() - xStrLengthOffset );
      }
      g2.drawString( str,
                       (float)( original.getX()+xlabel_step*i-10 ),
                       (float)( original.getY()+10 ) );
      i++;
    }
    while( j < ylabel_count ){
      String str = String.valueOf( ( int)(this.yMin + yValueStep * j ) );
      if( str.length() > yStrLengthOffset && yStrLengthOffset > 0 ) {
        str = str.substring( 0, str.length() - yStrLengthOffset );
      }

      g2.drawString( str,
                       (float)original.getX()-23,
                       (float)(original.getY()-ylabel_step*j)+5);
      j++;
    }
    //repaint();
  }
   /**
    *   add a point to the point vetor
    * @param point
    */
   public void addPoint(Point2D point){
    //myPen.clearRect(0,0,(int)this.dimension.getHeight(),(int)this.dimension.getWidth());
    this.pointVect.add(point);
    this.convertedPointVect.add( new Point2D.Double() );
    minOrMaxChanged = false;

    if( this.pointVect.size() == 1 ) {
        if( point.getX() > 0 ) {
            this.xMax = 1.1 * point.getX();
            this.xMin = 0.9 * point.getX();
        } else {
            this.xMax = 0.9 * point.getX();
            this.xMin = 1.1 * point.getX();
        }

        if( point.getY() > 0 ) {
            this.yMax = 1.1 * point.getY();
            this.yMin = 0.9 * point.getY();
        } else {
            this.yMax = 0.9 * point.getY();
            this.yMin = 1.1 * point.getY();
        }
    }

    if( point.getX() > this.xMax ) {
        if( this.xMax > 0 ) {
            this.xMax = 1.1 * point.getX();
        } else {
            this.xMax = 0.9 * point.getX();
        }
        minOrMaxChanged = true;
    }

    if( point.getX() < this.xMin ) {
        if( this.xMin > 0 ) {
            this.xMin = 0.9 * point.getX();
        } else {
            this.xMin = 1.1 * point.getX();
        }
        minOrMaxChanged = true;
    }

     if( point.getY() > this.yMax ) {
        if( this.yMax > 0 ) {
            this.yMax = 1.1 * point.getY();
        } else {
            this.yMax = 0.9 * point.getY();
        }
        minOrMaxChanged = true;
    }

    if( point.getY() < this.yMin ) {
        if( this.yMin > 0 ) {
            this.yMin = 0.9 * point.getY();
        } else {
            this.yMin = 1.1 * point.getY();
        }
        minOrMaxChanged = true;
    }

    if( this.xMax < 10.0 ) {
        this.xMax = 10.0;
        //this.xMin = 0.0;
        minOrMaxChanged = true;
    }
    if( this.yMax < 10.0 ) {
        this.yMax = 10.0;
        //this.yMin = 0.0;
        minOrMaxChanged = true;
    }

    //Avoid the case where xMin = xMax and yMin = yMax.
    if( this.xMin <= 1.01 * this.xMax &&
        this.xMin >= 0.99 * this.xMax ) {
        if( this.xMax > 0 ) {
          this.xMin = 0.9 * this.xMax;
        } else {
          this.xMin = 1.1 * this.xMax;
        }
        minOrMaxChanged = true;
    }

    if( this.yMin <= 1.01 * this.yMax &&
        this.yMin >= 0.99 * this.yMax ) {
          if( this.yMax > 0 ) {
            this.yMin = 0.9 * this.yMax;
          } else {
            this.yMin = 1.1 * this.yMax;
          }
          minOrMaxChanged = true;
    }

    if( !minOrMaxChanged && convertedPointVect.size() >= 2 ) {
        convert( point, (Point2D) convertedPointVect.lastElement() );
        //drawLineSegment( );
    } else {
        convert(this.pointVect );
    }

    repaint();
  }

  private void drawLineSegment( ) {
        Point2D from = (Point2D) convertedPointVect.elementAt( convertedPointVect.size() - 2 );
        Point2D to = (Point2D) convertedPointVect.lastElement();
        tmpLine.setLine( from.getX(), from.getY(), to.getX(), to.getY() );
        ((Graphics2D) myPen).draw( tmpLine );
        ((Graphics2D) myPen).drawRect((int)to.getX(),(int)to.getY(),2,2);
  }

  public void clear() {
    this.pointVect = new Vector();
    this.convertedPointVect = new Vector();
    repaint();
    xMin = Double.POSITIVE_INFINITY;
    yMin = Double.POSITIVE_INFINITY;
    xMax = Double.NEGATIVE_INFINITY;
    yMax = Double.NEGATIVE_INFINITY;
  }

  public void update()
  {  repaint();}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区不卡| 成人亚洲精品久久久久软件| 麻豆精品一区二区三区| 成人h精品动漫一区二区三区| 欧美一区二区三区在线看| 一区免费观看视频| 国产精品18久久久久久久久久久久 | 91精品国产免费| 亚洲视频1区2区| 国产乱人伦精品一区二区在线观看 | 亚洲视频电影在线| 国产成人久久精品77777最新版本| 欧美视频日韩视频在线观看| 国产蜜臀av在线一区二区三区| 日韩精品国产欧美| 欧美亚洲国产bt| 亚洲免费视频中文字幕| 高清不卡一区二区在线| 久久人人97超碰com| 日韩不卡一二三区| 欧美日本在线视频| 亚洲综合一区二区精品导航| 91丨porny丨中文| 亚洲欧洲精品一区二区三区不卡| 国产麻豆视频一区二区| 精品国产电影一区二区| 日本成人在线电影网| 精品婷婷伊人一区三区三| 一区二区久久久久| 色成人在线视频| 国产精品二三区| eeuss鲁片一区二区三区| 中文字幕av资源一区| 国产成人精品午夜视频免费| 久久久久久久久久看片| 国产成人免费视频一区| 国产精品视频观看| 91丝袜美腿高跟国产极品老师 | 精品理论电影在线观看 | 26uuu久久天堂性欧美| 久久99久久久久久久久久久| 欧美mv日韩mv国产网站app| 久久国产精品区| 久久久久久久久岛国免费| 国产高清不卡一区| 亚洲人成小说网站色在线| 91久久精品网| 日韩精品亚洲一区| 精品成人免费观看| 顶级嫩模精品视频在线看| 亚洲人成网站精品片在线观看| 色噜噜狠狠成人中文综合| 午夜精品福利久久久| 久久看人人爽人人| 色婷婷综合久久久中文一区二区 | 国产成人午夜99999| 最好看的中文字幕久久| 欧美在线观看禁18| 麻豆中文一区二区| 国产精品久久久久久久久免费相片| 一本大道久久a久久综合婷婷| 亚洲a一区二区| 久久精品视频在线免费观看| 91蝌蚪porny| 美女精品自拍一二三四| 《视频一区视频二区| 欧美日韩精品三区| 国产91综合网| 亚洲一二三区不卡| 欧美国产成人精品| 欧美日韩国产乱码电影| 国产一二精品视频| 亚洲一区二区中文在线| 精品国产凹凸成av人网站| 91久久精品午夜一区二区| 国产一区二区三区日韩 | 亚洲视频每日更新| 日韩一级黄色片| jvid福利写真一区二区三区| 香蕉av福利精品导航| 欧美高清一级片在线观看| 91麻豆精品国产| 92精品国产成人观看免费| 激情久久五月天| 偷拍自拍另类欧美| 亚洲男同性视频| 国产调教视频一区| 欧美一区二区视频在线观看2022| 99久久夜色精品国产网站| 国产呦萝稀缺另类资源| 石原莉奈一区二区三区在线观看| 亚洲欧洲在线观看av| 欧美激情综合在线| 久久久久久久综合| 欧美精品一区二区三区蜜臀| 欧美日韩国产美女| 欧美日韩综合在线| 91久久一区二区| 91免费观看在线| 成人国产亚洲欧美成人综合网| 精油按摩中文字幕久久| 蜜臀av一区二区在线免费观看 | 亚洲婷婷在线视频| 国产亚洲综合色| 欧美电影免费观看高清完整版在| 欧美日韩成人一区二区| 欧美亚洲丝袜传媒另类| 在线视频一区二区免费| 在线观看视频一区二区欧美日韩| 成人免费毛片片v| 风间由美中文字幕在线看视频国产欧美| 久久电影网站中文字幕| 免费观看成人av| 久久国产精品露脸对白| 韩国毛片一区二区三区| 久久国产生活片100| 国产一区二区三区| 国产一区不卡在线| 成人一区二区三区视频| 不卡av电影在线播放| 99精品热视频| 在线观看免费成人| 欧美老年两性高潮| 日韩天堂在线观看| 久久久精品国产免大香伊| 国产精品五月天| 亚洲激情自拍偷拍| 亚洲成人高清在线| 久久国产乱子精品免费女| 国产激情一区二区三区四区| 懂色av一区二区三区免费观看 | 欧美日韩一级大片网址| 精品视频在线视频| 精品欧美一区二区三区精品久久 | 亚洲亚洲人成综合网络| 日日骚欧美日韩| 激情五月播播久久久精品| 粉嫩aⅴ一区二区三区四区| 99精品国产99久久久久久白柏 | 色呦呦网站一区| 欧美日韩国产小视频在线观看| 欧美一区二区三区四区视频| 日韩精品一区在线| 国产精品国产三级国产aⅴ中文 | 亚洲伦在线观看| 午夜精品久久久久久久久| 国精品**一区二区三区在线蜜桃| 国产精品一区二区三区乱码| 91色九色蝌蚪| 欧美电视剧在线看免费| 国产精品拍天天在线| 一卡二卡欧美日韩| 精品中文字幕一区二区| 99久久综合精品| 欧美一区二区三区四区五区| 国产精品色一区二区三区| 日韩影院精彩在线| 成人午夜伦理影院| 欧美日本在线观看| 国产精品无遮挡| 日韩综合在线视频| voyeur盗摄精品| 欧美一区日韩一区| 亚洲欧洲制服丝袜| 国产一区二区三区免费播放| 欧美日韩欧美一区二区| 国产色婷婷亚洲99精品小说| 亚欧色一区w666天堂| 国产成人精品免费网站| 欧美一区二区三区婷婷月色| 亚洲欧美日韩一区二区| 国产精品一区二区在线观看不卡| 欧美色中文字幕| 国产精品久久久爽爽爽麻豆色哟哟 | 夫妻av一区二区| 精品久久久影院| 蜜臀av性久久久久蜜臀av麻豆| 91免费版在线看| 欧美国产一区二区| 美日韩一区二区| 欧美久久久久久蜜桃| 亚洲乱码国产乱码精品精98午夜| 激情深爱一区二区| 欧美一区二区三区啪啪| 一区二区激情小说| 91老司机福利 在线| 中文字幕亚洲一区二区va在线| 激情综合色播激情啊| 日韩免费观看高清完整版在线观看| 一个色综合av| 色噜噜狠狠色综合欧洲selulu| 国产精品久久久久国产精品日日| 国产专区欧美精品| 久久久久久99精品| 国产麻豆精品久久一二三| 欧美成人艳星乳罩| 久久99蜜桃精品| 久久精品无码一区二区三区| 韩国女主播一区二区三区| 久久亚洲精华国产精华液|