Viernes 8 de Noviembre de 2024, 00:39
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
Duda Sobre Librería Jfreechart
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Duda Sobre Librería Jfreechart (Leído 4679 veces)
ropel
Miembro activo
Mensajes: 32
Duda Sobre Librería Jfreechart
«
en:
Domingo 20 de Abril de 2008, 13:42 »
0
Hola,
¿Cómo puedo añadir a un JPanel en Swing un gráfico realizado mediante la librería JFreeChart? He intentado mediante el método común "add" pero me da error. Necesito mostrar dentro de un JPanel determinado el gráfico, y no se me ocurre idea alguna de cómo implementar lo que pretendo.
Espero que alguien me pueda echar una mano. Gracias de antemano.
Un saludo.
Tweet
manix
Miembro MUY activo
Mensajes: 203
Nacionalidad:
Re: Duda Sobre Librería Jfreechart
«
Respuesta #1 en:
Domingo 20 de Abril de 2008, 21:58 »
0
Bueno casi no he trabajado con ese componente pero porque no intentas sobreescribir el metodo paint() de la clase JPanel:
primero hacemos un metodo para crear el grafico:
Código: Text
public BufferedImage creaImagen(){
XYSeries series = new XYSeries("Evolucion");
series.add(1, 23);
series.add(2, 34);
series.add(3, 51);
//series ....
XYDataset juegoDatos= new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createLineXYChart("Sesiones en Adictos al Trabajo",
"Meses","Sesiones",juegoDatos,PlotOrientation.VERTICAL,false, false, true);
BufferedImage image = chart.createBufferedImage(300,300);
return image;
}
luego sobre escribimos el metodo de la clase jpanel:
Código: Text
BufferedImage grafica = null;
public void paint(java.awt.Graphics g) {
if(grafica == null){
grafica = this.creaImagen();
}
g.drawImage(grafica,30,30,null);
}
frealgagu
Miembro activo
Mensajes: 49
Re: Duda Sobre Librería Jfreechart
«
Respuesta #2 en:
Lunes 21 de Abril de 2008, 05:13 »
0
Es muy sencillo agregar a un JPanel un gráfico de la librería JFreeChart y es mediante la clase ChartPanel incluida dentro del mismo paquete.
JFreeChart chart;
.
.
.
JPanel panel = new ChartPanel(chart);
Así en el momento de crear el Jpanel se le puede enviar un nuevo ChartPanel con el objeto chart que es de tipo JFreeChart.
Como bien se sabe un JPanel si puede contener otro JPanel, por lo que no habría ningún problema ejecuntando este código.
objetoClasePrincipal.add(panel);
ropel
Miembro activo
Mensajes: 32
Re: Duda Sobre Librería Jfreechart
«
Respuesta #3 en:
Martes 22 de Abril de 2008, 20:08 »
0
pero....¿cómo puedo mostrar el gráfico así si no se pinta???? yo hasta ahora lo había convertido en BufferedImage, y así lo había pintado, pero mediante un ChartPanel, ¿cómo lo puedo hacer?
Espero tu ayuda por favor....
frealgagu
Miembro activo
Mensajes: 49
Re: Duda Sobre Librería Jfreechart
«
Respuesta #4 en:
Martes 22 de Abril de 2008, 21:42 »
0
Ok, voy a explicar un poco mejor como utilizar un gráfico dentro de un JPanel:
Código: Text
import org.jfree.data.*;
import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
public class ventanaGrafica extends JPanel
{
BufferedImage grafica = null;
public ventanaGrafica()
{
}
public static void main(String args[])
{
JFrame ventana=new JFrame("Ejemplo");
ventanaGrafica panel = new ventanaGrafica();
ventana.getContentPane().add(panel);
ventana.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
ventana.pack();
ventana.setSize(400,400);
ventana.show();
}
public BufferedImage creaImagen()
{
XYSeries series = new XYSeries("Evolucion");
series.add(1, 23);
series.add(2, 34);
series.add(3, 51);
series.add(4, 67);
series.add(5, 89);
series.add(6, 121);
series.add(7, 137);
XYDataset juegoDatos= new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart("Titulo","Eje Y","Eje X",juegoDatos,PlotOrientation.VERTICAL,false,false,true);
BufferedImage image = chart.createBufferedImage(300,300);
return image;
}
public void paint(java.awt.Graphics g) {
if(grafica == null)
{
grafica = this.creaImagen();
}
g.drawImage(grafica,30,30,null);
}
}
Bueno, en realidad coloqué el Jpanel principal dentro de un JFrame que sería lo más lógico.
Este es un código sencillo para la creación de una gráfica 2D con determinados valores, mostrándolos mediante la función paint() del JPanel, tal como lo decía manix (en realidad es el código completo de manix, aunque originalmente venía para un Frame normal y yo lo adapté para que funcionara para un JPanel), que me pareció la mejor forma de implementarlo.
frealgagu
Miembro activo
Mensajes: 49
Re: Duda Sobre Librería Jfreechart
«
Respuesta #5 en:
Martes 22 de Abril de 2008, 21:53 »
0
Ahora que si lo que quiere es no utilizar el método paint(), puede utilizar un JLabel para mostrar dentro del JPanel añdiendo esta parte al código al constructor del JPanel
Código: Text
public class ventanaGrafica extends JPanel
{
BufferedImage grafica = null;
JLabel etiqueta;
public ventanaGrafica()
{
etiqueta=new JLabel();
add(etiqueta);
grafica=this.creaImagen();
etiqueta.setIcon((Icon)new ImageIcon(grafica));
}
public static void main(String args[])
......
.....
En la cualcreo un JLabel y lo añado al JPanel mediante add(), luego creo la imagen en el BufferedImage normalmente con el metodo creaImagen() y por último hago que el JLabel me muestre un a imagen mediante setIcon().
En realidad BufferedImage como hereda de Image, puedo crear un nuevo ImageIcon con "grafica", y luego lo convierto a Icon y se lo agrego a etiqueta mediante setIcon.
Aquí le coloco el código completo por si hubo algún error al pasarlo acá:
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
ropel
Miembro activo
Mensajes: 32
Re: Duda Sobre Librería Jfreechart
«
Respuesta #6 en:
Martes 22 de Abril de 2008, 22:42 »
0
Gracias por tu ayuda, me ha servido de mucho. Ya he solucionado el problema.
Saludos.
tinchote7
Nuevo Miembro
Mensajes: 1
Re: Duda Sobre Librería Jfreechart
«
Respuesta #7 en:
Domingo 19 de Septiembre de 2010, 20:41 »
0
necesito el codigo... tengo el mismoproblema... gracias
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
Duda Sobre Librería Jfreechart