java swing layout jfreechart sizing

java - ¿Cómo cambio el tamaño de un JFreeChart?



swing layout (3)

He agregado un JFreeChart a un JPanel (usando un BorderLayout ), y es enorme . ¿Hay algo que pueda hacer para hacerlo más pequeño?

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


Intente configurar el tamaño del panel en el que se encuentra su gráfico.

Es posible que deba establecer tanto JPanel middle como ChartPanel cp



Cuando crea su ChartPanel , tiene varias opciones que afectan el resultado:

  1. Acepte DEFAULT_WIDTH y DEFAULT_HEIGHT : 680 x 420.

  2. Especifique el width y la height preferidos en el constructor.

  3. Invoque setPreferredSize() explícitamente si corresponde .

  4. getPreferredSize() para calcular el tamaño dinámicamente.

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

  5. Elija el diseño del contenedor al que se ChartPanel . Tenga en cuenta que el diseño predeterminado de JPanel es FlowLayout , mientras que el de JFrame es BorderLayout . Como ejemplo concreto, ThermometerDemo utiliza ambos valores preferidos en el constructor y un GridLayout para el contenedor para permitir el cambio de tamaño dinámico.