如何更改 JFreeChart 的大小 [英] How do I change a JFreeChart's size

查看:36
本文介绍了如何更改 JFreeChart 的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将 JFreeChart 添加到 JPanel(使用 BorderLayout),它巨大.有什么办法可以让它变小吗?

I've added a JFreeChart to a JPanel (using a BorderLayout), and it's huge. Is there something I can do to make it smaller?

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);
}   

推荐答案

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

When you create your ChartPanel, you have several options that affect the result:

  1. 接受 DEFAULT_WIDTHDEFAULT_HEIGHT:680 x 420.

  1. Accept the DEFAULT_WIDTH and DEFAULT_HEIGHT: 680 x 420.

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

Specify the preferred width and height in the constructor.

如果适当,则显式调用setPreferredSize().

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

Override getPreferredSize() to calculate the size dynamically.

@Override
public Dimension getPreferredSize() {
    // given some values of w & h
    return new Dimension(w, h);
}

  • 选择容器的布局将添加 ChartPanel.注意JPanel的默认布局是FlowLayout,而JFrame的默认布局是BorderLayout.作为一个具体的例子,ThermometerDemo 使用构造函数中的首选值和 GridLayout 允许动态调整大小的容器.

  • Choose the layout of the container to which the ChartPanel will be added. Note that the default layout of JPanel is FlowLayout, while that of JFrame is BorderLayout. As a concrete example, ThermometerDemo uses both preferred values in the constructor and a GridLayout for the container to allow dynamic resizing.

    这篇关于如何更改 JFreeChart 的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆