1

これはわずかに変更されたコードです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);

            }
        });
    }

描く

ここに画像の説明を入力してください

チャートの周りの白い境界線を削除することは可能ですか?一部の試行はコード内にありますが、効果はありませんでした。

4

1 に答える 1

3

ドメイン軸と範囲軸をすでに削除しているので、説明していないパディングのソースがもう1つ残っています。あなたはこれを見逃しています:

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();
  }
}
于 2013-02-26T22:27:29.643 に答える