为了账号安全,请及时绑定邮箱和手机立即绑定

如何更改JFree图表的大小

如何更改JFree图表的大小

慕森王 2019-07-13 16:08:33
我增加了一个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);}
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

当你创建你的ChartPanel,您有几个影响结果的选项:

  1. 接受DEFAULT_WIDTHDEFAULT_HEIGHT*680 x 420。

  2. 指定首选widthheight在构造函数中。

  3. 调用setPreferredSize()显式适当.

  4. 覆盖getPreferredSize()以动态计算大小。

    @Overridepublic Dimension getPreferredSize() {
        // given some values of w & h
        return new Dimension(w, h);}
  5. 选择布局的容器的ChartPanel将被添加。注意,默认布局为JPanelFlowLayout,而JFrameBorderLayout..作为一个具体的例子,ThermometerDemo在构造函数中同时使用首选值和GridLayout使容器允许动态调整大小。


查看完整回答
反对 回复 2019-07-13
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我也有一个问题,我的派图太大与BorderLayout。最后,我通过将图表转换成图像来解决我的问题。

 private PieDataset updateCSFDataSet(){
        DefaultPieDataset dataSet = new DefaultPieDataset();
            dataSet.setValue("Clear(" + clearCount + ")" , clearCount);
            dataSet.setValue("Smoky(" + smokyCount + ")", smokyCount);
            dataSet.setValue("Foggy(" + foggyCount + ")", foggyCount);
            dataSet.setValue("Skipped(" + skipCount + ")", skipCount);
            dataSet.setValue("Unlabeled(" + unlabeledCount + ")", unlabeledCount);
        return dataSet;
    }

    private ImageIcon createChart(String title, PieDataset dataSet){
        JFreeChart chart = ChartFactory.createPieChart(
                title,
                dataSet,
                true,
                false,
                false
        );

        PiePlot plot = (PiePlot) chart.getPlot();
        plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
        plot.setNoDataMessage("No data available");
        plot.setCircular(true);
        plot.setIgnoreZeroValues(true);
        plot.setLabelGap(0.02);

        return new ImageIcon(chart.createBufferedImage(400,300));
    }


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 716 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信