2013-04-21 94 views
1

我正在使用JFreeChart在我的程序中創建圖表。我的問題是我無法正確設置高度。我已經嘗試了所有我能想到的命令,但我已將其放在其他面板中,但沒有任何效果。 我希望能夠將它放在角落......或任何地方,並能夠設置寬度和高度。我也嘗試過setPrefferedSize,但它只適用於寬度。java餅圖高度未正確放置

代碼:

DefaultPieDataset result = new DefaultPieDataset(); 
    result.setValue("TotalSwag", totalSwag); 
    result.setValue("TotalYolo", totalYolo); 
    result.setValue("TotalCool", totalCool); 
    result.setValue("TotalLame", totalLame); 
    JFreeChart chart = ChartFactory.createPieChart3D("Swag-O-meter", result, true, true, false); 
    PiePlot3D plot = (PiePlot3D) chart.getPlot(); 
    plot.setStartAngle(290); 
    plot.setDirection(Rotation.CLOCKWISE); 
    plot.setForegroundAlpha(0.5f); 
    ChartPanel chartPanel = new ChartPanel(chart, W, H, W, H, W, H, 
      false, true, true, true, true, true); 
    chartPanel.setMaximumSize(new Dimension(150, 150)); 

    charPanel.add(chartPanel); 
    charPanel.setSize(W, H); 
    contentPane.add(charPanel, BorderLayout.WEST); 
+2

嘗試在frame.setVisible(true);之前調用'frame.pack();'。 – Bobulous 2013-04-21 18:04:01

+0

有沒有辦法做到這一點,而不會強制框架的大小與它內部的東西有關?我希望所有窗戶的尺寸相同 – Ted 2013-04-21 18:33:05

+0

嗯,我的答案是修復它的那個,但我只能在24小時內接受它,原因是某種原因。儘管如此,你的加入是非常有用的,謝謝 – Ted 2013-04-22 12:55:47

回答

0

我已經找到了如何解決它,我不得不這樣做是不使用的FlowLayout,而是一個GroupLayout的,因爲面板正在使圖表放大,就好像你將一個按鈕放在flowLayout中一樣,它將變成它所在區域的大小。感謝大家的驚人幫助。

+1

'流程圖'採用了組件的首選大小,變得非常艱難。更多關於'GroupLayout' [這裏](http://stackoverflow.com/a/8504753/230513)。您是否使用GUI編輯器? – trashgod 2013-04-22 09:43:59

+0

我使用它來自動設置佈局,因爲我是新手,我仍然有點被它的一些能力所嚇倒。非常感謝你 – Ted 2013-04-22 12:54:36

+1

不客氣。不要害怕嘗試使用[簡短,完整的示例](http://sscce.org/),例如this [one](http://stackoverflow.com/a/2561540/230513),這可能有助於你在學習的時候使用編輯器。 – trashgod 2013-04-22 14:43:51

3

一個JFreeChart不是JComponent,但ChartPanel是。您可以使用提及的任何適當方法控制尺寸here

我想要所有窗口的尺寸相同

在這種情況下,我會重寫getPreferredSize()返回具有相等widthheight一個Dimension。您可以使用PiePlot#setCircular()來保存PiePlot的寬高比。

example顯示圖表的GridLayout(1, 0)每個具有ThermometerPlot

image

+0

我設法讓圖表在角落處變小,但仍然有一個巨大的灰色區域,其中的高度較早。 – Ted 2013-04-21 22:07:53

+0

我使框架大小仍然存在,通常它可以,但它覆蓋了我加載的背景圖像 – Ted 2013-04-21 22:54:12

+1

請編輯您的問題以包含顯示您的方法的[sscce](http://sscce.org/)。 ['FauxImage'](http://stackoverflow.com/a/8090328/230513)可能是一個方便的附件。 – trashgod 2013-04-22 01:54:15