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:
Acepte
DEFAULT_WIDTHyDEFAULT_HEIGHT: 680 x 420.Especifique el
widthy laheightpreferidos en el constructor.Invoque
setPreferredSize()explícitamente si corresponde .getPreferredSize()para calcular el tamaño dinámicamente.@Override public Dimension getPreferredSize() { // given some values of w & h return new Dimension(w, h); }Elija el diseño del contenedor al que se
ChartPanel. Tenga en cuenta que el diseño predeterminado deJPanelesFlowLayout, mientras que el deJFrameesBorderLayout. Como ejemplo concreto,ThermometerDemoutiliza ambos valores preferidos en el constructor y unGridLayoutpara el contenedor para permitir el cambio de tamaño dinámico.