删除图表周围的白色边框

删除图表周围的白色边框

这是org.jfree.chart.demo.BarChartDemo1的稍作修改的代码:

public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {

                CategoryDataset dataset = createDataset();

                JFreeChart chart = createChart(dataset);

                //chart.setBorderVisible(false); // no effect
                //chart.setPadding(new RectangleInsets(0, 0, 0, 0)); // no effect

                ChartPanel chartPanel = new ChartPanel(chart);
                chartPanel.setFillZoomRectangle(true);
                chartPanel.setMouseWheelEnabled(true);
                //chartPanel.setPreferredSize(new Dimension(500, 270));
                chartPanel.setBounds(100,100,640,480);

                JFrame frame = new JFrame();
                frame.setLayout(null);
                //frame.setContentPane(chartPanel);
                frame.add(chartPanel);
                frame.pack();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);

            }
        });
    }


它画



是否可以删除图表周围的白色边框?有些尝试是在代码中进行的,没有效果。

最佳答案

看到您已经消除了域轴和范围轴,仍然有您没有考虑的另一种填充来源。您缺少此:

chart.getPlot().setInsets( new RectangleInsets(){
        public void trim( Rectangle2D area ) {};
    });


您在已发布示例中看到的空白是由于Plot插入项导致的,您的已发布代码正在操纵JFreeChart。解决方案代码中使用匿名子类的原因是在原始实现中消除了1像素的“光晕”。

编辑:

我摆弄了一些东西,发现除了插入修复程序之外,您可能也可能不需要此功能。我还没有对此深入探讨,但是传递一个子类CategoryPlot似乎至少可以解决这种特殊情况。

private class WrappedCategoryPlot extends CategoryPlot
{
  @Override
  protected AxisSpace calculateAxisSpace( Graphics2D g2, Rectangle2D plotArea )
  {
     return new AxisSpace();
  }
}

关于java - 如何删除图表周围的白色边框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15098227/

10-13 00:36