【问题标题】:How to make JFreeChart to keep aspect ratio?如何让 JFreeChart 保持纵横比?
【发布时间】:2015-01-29 07:02:27
【问题描述】:

是否可以保持某些单位的纵横比?例如,可以把它们做成正方形吗?

在以下示例中绘制一个矩形。不幸的是,可以通过调整窗口大小使其成为正方形。是否可以告诉 JFreeChart 在调整大小时保持比例?

package tests.org.jfree.chart;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.DefaultXYDataset;

public class Runner_JFreeChart_01 {

    public static class MyChartPanel extends ChartPanel {

        private static final long serialVersionUID = 8474384653351996554L;

        DefaultXYDataset dataset = new DefaultXYDataset();
        {
            dataset.addSeries("key", new double[][]{{10, 300, 300, 10, 10},{10, 10, 50, 50, 10}});
        }

        JFreeChart chart = ChartFactory.createXYLineChart("", "", "", dataset);

        public MyChartPanel() {
            super(null);
            setChart(chart);
        }

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame frame = new JFrame("Runner_JFreeChart_01");
                frame.add(new MyChartPanel());

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);

            }
        });


    }

}

结果:

【问题讨论】:

  • 你试过ComponentListener吗?
  • 什么意思?我不想阻止组件调整大小。我想要一个带有调整大小组件的图表保持率。
  • 可能更像this

标签: java jfreechart aspect-ratio


【解决方案1】:

在你的 main 中尝试添加以下代码,看看它是否有效。

 public static void main(String[] args) { 
     MyChartPanel myChart = new MyChartPanel();
     myChart.setMinimumDrawWidth(0);
     myChart.setMaximumDrawWidth(Integer.MAX_VALUE);
     myChart.setMinimumDrawHeight(0);
     myChart.setMaximumDrawHeight(Integer.MAX_VALUE);

      // Other code here

然后将图表添加到 JFrame 的位置: 替换以下代码:

frame.add(new MyChartPanel());

frame.add(myChart);

享受吧!

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2018-04-02
    • 2018-03-11
    • 1970-01-01
    • 2017-11-13
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多