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_WIDTH
yDEFAULT_HEIGHT
: 680 x 420.Especifique el
width
y laheight
preferidos 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 deJPanel
esFlowLayout
, mientras que el deJFrame
esBorderLayout
. Como ejemplo concreto,ThermometerDemo
utiliza ambos valores preferidos en el constructor y unGridLayout
para el contenedor para permitir el cambio de tamaño dinámico.