Comment puis-je modifier la taille JFreeChart
J'ai ajouté un JFreeChart
à un JPanel
(à l'aide d'un BorderLayout
), et c'est énorme. Est-il quelque chose que je peux faire pour le rendre plus petit?
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);
}
OriginalL'auteur R Doolabh | 2012-04-23
Vous devez vous connecter pour publier un commentaire.
Lorsque vous créez votre
ChartPanel
, vous avez plusieurs options qui affectent le résultat:Accepter la
DEFAULT_WIDTH
etDEFAULT_HEIGHT
: 680 x 420.Spécifier le préféré
width
etheight
dans le constructeur.Invoquer
setPreferredSize()
explicitement si approprié.Remplacer
getPreferredSize()
pour calculer la taille de façon dynamique.Choisir le mise en page du conteneur auquel le
ChartPanel
sera ajouté. Notez que la mise en page par défaut deJPanel
estFlowLayout
, tandis que celle deJFrame
estBorderLayout
. À titre d'exemple concret,ThermometerDemo
utilise à la fois les valeurs privilégiées dans le constructeur et unGridLayout
pour le conteneur pour permettre le redimensionnement dynamique.ok, je vois ce que vous avez fait ici. envisager d'établir un lien de votre réponse, alors, de ne pas la question alors
Merci pour la lecture et le commentaire. Si seulement c'était si simple! Je dirais que c'est parfois approprié, comme l'a suggéré ici et ici.
OriginalL'auteur trashgod
En plus de répondre à "4" de @trashgod, j'ai eu le même problème et a réussi à le résoudre comme ceci:
(1) créer une classe personnalisée qui s'étend Composite
(2) obtenir la taille en quelque sorte, que vous souhaitez transmettre à votre graphique
(3) créer une méthode qui retourne un "ChartPanel" objet comme ceci:
J'ai préparé un SSCCE pour vous laisser savoir comment ça fonctionne:
J'espère vraiment que ça aide!
OriginalL'auteur Paul Efford
J'ai eu un problème avec mon camembert trop grande avec BorderLayout trop. J'ai fini par résoudre mon problème en convertissant le graphique pour une image à la place.
Avant
Après
Code
OriginalL'auteur StarSweeper
Essayez de définir la taille du Panneau de votre graphique.
Vous pourriez avoir besoin pour définir à la fois un Composite moyen et ChartPanel cp
OriginalL'auteur Brendan Cutajar
http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=18631
http://www.jfree.org/forum/viewtopic.php?f=3&t=109615
http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=31582
OriginalL'auteur Tejas Patil