9

( a を使用して) aJFreeChartに a を追加しましたが、それは巨大です。小さくするために何かできることはありますか?JPanelBorderLayout

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

4 に答える 4

14

を作成するときChartPanel、結果に影響を与えるいくつかのオプションがあります。

  1. DEFAULT_WIDTHおよびを受け入れますDEFAULT_HEIGHT:680x420。

  2. コンストラクターでpreferredwidthとを指定します。height

  3. setPreferredSize()必要に応じて明示的に呼び出します

  4. getPreferredSize()サイズを動的に計算するためにオーバーライドします。

    @Override
    public Dimension getPreferredSize() {
        // given some values of w & h
        return new Dimension(w, h);
    }
    
  5. 追加するコンテナのレイアウトを選択しますChartPanel。のデフォルトのレイアウトはですJPanelFlowLayout、のデフォルトのレイアウトはJFrameですBorderLayout。具体的な例として、ThermometerDemoコンストラクターの優先値とGridLayoutコンテナーのaの両方を使用して、動的なサイズ変更を可能にします。

画像

于 2012-04-23T08:45:22.243 に答える
0

チャートが入っているパネルのサイズを設定してみてください。

JPanel middle と ChartPanel cp の両方を設定する必要があるかもしれません

于 2012-04-23T03:23:13.500 に答える