JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
作者 有關jfreechart的問題
peter777777777





發文: 27
積分: 0
於 2010-02-17 11:13 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Dear All ~

這幾天剛好在寫一個案子時,用到jfreechart裡的org.jfree.chart.annotations.XYBoxAnnotation
但一直在chart圖裡畫不出來一個box(正確來說應該是不是畫到我想要的正確座標)
後來發現原來是我程式裡有改到一個參數導致

1
2
ValueAxis rangeAxis = (ValueAxis) plot.getRangeAxis();
rangeAxis.setInverted(true);


查看原始的程式碼,似乎只有在rangeAxis.setInverted(false);(or domainAxis.setInverted(false))
才可以正常的畫出來?
不知道這樣算不算是bug?
如果是的話~不知道誰能幫忙回報一下jfreechart
不敢自已回報,是因為自已英文真的滿糟的~再加上不確定是不是我自已看錯的關係!

附上自已修改後的XYBoxAnnotation就可以變成"我自已"所想像的樣子
(附上只有draw()的部份,只有改到這地方,用紅色字標出)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  public void draw(Graphics2D g2, XYPlot plot, Rectangle2D dataArea, ValueAxis domainAxis, ValueAxis rangeAxis, int rendererIndex,
      PlotRenderingInfo info) {
 
    PlotOrientation orientation = plot.getOrientation();
    RectangleEdge domainEdge = Plot.resolveDomainAxisLocation(plot.getDomainAxisLocation(), orientation);
    RectangleEdge rangeEdge = Plot.resolveRangeAxisLocation(plot.getRangeAxisLocation(), orientation);
 
    double transX0 = domainAxis.valueToJava2D(this.x0, dataArea, domainEdge);
    double transY0 = rangeAxis.valueToJava2D(this.y0, dataArea, rangeEdge);
    double transX1 = domainAxis.valueToJava2D(this.x1, dataArea, domainEdge);
    double transY1 = rangeAxis.valueToJava2D(this.y1, dataArea, rangeEdge);
 
    Rectangle2D box = null;
 
    boolean blRA = plot.getRangeAxis().isInverted(), blDA = plot.getDomainAxis().isInverted();
    if (orientation == PlotOrientation.HORIZONTAL) {
    box = new Rectangle2D.Double(blDA ? transY1 : transY0,blRA ? transX0 : transX1, blRA ? transY0 - transY1 : transY1 - transY0, blDA ? transX1 - transX0 : transX0 - transX1);
    } else if (orientation == PlotOrientation.VERTICAL) {
    box = new Rectangle2D.Double(blDA ? transX1 : transX0, blRA ? transY0 : transY1, blDA ? transX0 - transX1 : transX1 - transX0, blRA ? transY1 - transY0 : transY0 - transY1);
    }
 
    if (this.fillPaint != null) {
      g2.setPaint(this.fillPaint);
      g2.fill(box);
    }
 
    if (this.stroke != null && this.outlinePaint != null) {
      g2.setPaint(this.outlinePaint);
      g2.setStroke(this.stroke);
      g2.draw(box);
    }
    addEntity(info, box, rendererIndex, getToolTipText(), getURL());
 
  }


如果我附上的有問題,也請告訴我~感恩!


reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8