猿问

如何更改JFree图表的大小

我增加了一个JFreeChart转到JPanel(使用BorderLayout),而且是.巨量..我能做些什么让它变小吗?

public void generateChart(){
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    //set the values of the chart
    for(int i=0; i<8; i++)
    {
        dataset.setValue(income_array[i], "Income",
            Double.toString(percent_array[i]));
    }

    JFreeChart chart = ChartFactory.createBarChart(
        "Required Annual Income for a Variety of Interest Rates",
        "Percent", "Income", dataset, PlotOrientation.VERTICAL,
        false,true, false);
    ChartPanel cp = new ChartPanel(chart);

    chart.setBackgroundPaint(Color.white);
    chart.getTitle().setPaint(Color.black); 
    CategoryPlot p = chart.getCategoryPlot(); 
    p.setRangeGridlinePaint(Color.blue); 

    //cp.setMaximumDrawHeight(5);
    //cp.setMaximumDrawWidth(5);
    //cp.setZoomOutFactor(.1);
    JPanel graph = new JPanel();
    graph.add(cp);
    middle.add(graph, BorderLayout.CENTER);}


慕森王
浏览 717回答 3
3回答

收到一只叮咚

当你创建你的ChartPanel,您有几个影响结果的选项:接受DEFAULT_WIDTH和DEFAULT_HEIGHT*680 x 420。指定首选width和height在构造函数中。调用setPreferredSize()显式适当.覆盖getPreferredSize()以动态计算大小。@Overridepublic&nbsp;Dimension&nbsp;getPreferredSize()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;given&nbsp;some&nbsp;values&nbsp;of&nbsp;w&nbsp;&&nbsp;h &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;Dimension(w,&nbsp;h);}选择布局的容器的ChartPanel将被添加。注意,默认布局为JPanel是FlowLayout,而JFrame是BorderLayout..作为一个具体的例子,ThermometerDemo在构造函数中同时使用首选值和GridLayout使容器允许动态调整大小。

叮当猫咪

我也有一个问题,我的派图太大与BorderLayout。最后,我通过将图表转换成图像来解决我的问题。&nbsp;private&nbsp;PieDataset&nbsp;updateCSFDataSet(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultPieDataset&nbsp;dataSet&nbsp;=&nbsp;new&nbsp;DefaultPieDataset(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSet.setValue("Clear("&nbsp;+&nbsp;clearCount&nbsp;+&nbsp;")"&nbsp;,&nbsp;clearCount); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSet.setValue("Smoky("&nbsp;+&nbsp;smokyCount&nbsp;+&nbsp;")",&nbsp;smokyCount); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSet.setValue("Foggy("&nbsp;+&nbsp;foggyCount&nbsp;+&nbsp;")",&nbsp;foggyCount); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSet.setValue("Skipped("&nbsp;+&nbsp;skipCount&nbsp;+&nbsp;")",&nbsp;skipCount); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSet.setValue("Unlabeled("&nbsp;+&nbsp;unlabeledCount&nbsp;+&nbsp;")",&nbsp;unlabeledCount); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dataSet; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;ImageIcon&nbsp;createChart(String&nbsp;title,&nbsp;PieDataset&nbsp;dataSet){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFreeChart&nbsp;chart&nbsp;=&nbsp;ChartFactory.createPieChart( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataSet, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PiePlot&nbsp;plot&nbsp;=&nbsp;(PiePlot)&nbsp;chart.getPlot(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setLabelFont(new&nbsp;Font("SansSerif",&nbsp;Font.PLAIN,&nbsp;12)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setNoDataMessage("No&nbsp;data&nbsp;available"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setCircular(true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setIgnoreZeroValues(true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setLabelGap(0.02); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;ImageIcon(chart.createBufferedImage(400,300)); &nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP
我要回答