Desenhando o gráfico de barras

2 respostas
dracon

Pessoal este código abaixo faz gerar um gráfico de barras com os seguintes detalhes: o usuário que determine o número de barras e os valores das barras. E as barras tem que ter as alturas dos valores digitados pelo usuário…

O problema é o seguinte: Não estou conseguindo gerar o gráfico com seus respectivos valores do usuário. Alguém pode me ajudar?

Bom eu só quero o método Paint (). Para gerar o gráfico com os valores que o usuário digitou… Pois não quero mudar nada da lógica do código.

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Graficobarras extends Applet implements ActionListener
{
    int i,cor,qtdbarra,count,x;
    int []vForma;//inicialização do vetor sem tamanho nenhum
    TextField barras = new TextField (5); //quantidade de barras que o gráfico vai ter
    TextField valorbarra = new TextField(5); //entrada dos valores
    Button qtdbarras = new Button(); //botão da quatidade de barras
    Button valorbarrasx=new Button();//botão dos valores das barras
    Button gerargrafico=new Button();//botão para gerar o gráfico
    Label l2 = new Label ("Digite os valores das barras:");//label dos valores
    Label l1 = new Label("Quantidade de Barras:");//label da quatidade de barras
                
    public void actionPerformed (ActionEvent e)
    {
    	String buttonCommand = e.getActionCommand();
    	if (buttonCommand.equals("Qtde de Barras"))
		{
			qtdbarra = Integer.parseInt(barras.getText());
			
			//inicializando o vetor com o tamanho definido
			vForma = new int [qtdbarra];
			
			//depois que digitou o valor o textfiled fica inabilitado
			barras.setEnabled (false);
			
			//depois que entrou com o valor o botão fica inabilitado
			qtdbarras.setEnabled (false);
			
			//Habilitando o textfield dos valores das barras
			valorbarrasx.setEnabled (true);
			
			//habilitando o botão dos valores das barras
			valorbarra.setEnabled (true);
			
			count=0;//inicializa o count para condição abaixo
		}
  	  	
  	  	if (buttonCommand.equals("Valores das Barras"))
		{	
			i=0;//inicializando o índice do vetor
			if (count<=qtdbarra)//inserindo os valores das barras no vetor
			{
				vForma[i] = Integer.parseInt(valorbarra.getText());
				i++;
				valorbarra.setText("");
			}
			count++;
			//condição de parada depois que o vetor está preenchido
			if (count==qtdbarra)
			{
				valorbarra.setEnabled (false);//desabilitando o textfield dos valores
				valorbarrasx.setEnabled (false);//desabilitando o botão dos valores
				gerargrafico.setEnabled (true);//habilitando o botão de gerar gráfico
			}			
		}
		if (buttonCommand.equals("Gerar Grafico"))
		{		
		  repaint();	
		}
    } 
    	
	public void init()
    {
       	//adicionando label da quatidade de barras
       	add(l1);
       	
       	add(barras); //adiciona o TextField da quantidade de barras
        
        //adiciona o botão da quantidade de barras
        qtdbarras.setLabel("Qtde de Barras");
        add(qtdbarras);
        qtdbarras.addActionListener(this);
         
        add(l2); //adicionando label dos valores das barras     
                
        add(valorbarra); //adiciona o TextField dos valores
       	
       	//adiciona o botão da quantidade de valores do gráfico
       	valorbarrasx.setLabel("Valores das Barras");
        add(valorbarrasx);
        valorbarrasx.addActionListener(this);
        
        //adiciona o botão para gerar o gráfico.
       	gerargrafico.setLabel("Gerar Grafico");
        add(gerargrafico);
        gerargrafico.addActionListener(this);
        
        valorbarra.setEnabled (false);//desabilita o textfield do valores das barras
        valorbarrasx.setEnabled (false);//desabilita o botão do valores das barras
		gerargrafico.setEnabled (false);//desabilita o botão gerar gráfico
    }
	public void paint (Graphics g)
  	{
   		g.setColor (Color.black);
    	g.drawLine (0,550, 0,0); //linha da esquerda
   		g.drawLine (0,549, 5000,550);//linha de baixo
   		g.drawLine (899,550, 899,0);//linha da direita
  		for (x=0;x<=qtdbarra;x++)
  		{
  			cor  = (int) (Math.random() * 16000000);
  			g.fillRect(i,549,25,vForma[i]);
  		}
   	}
}

Código do HTML para chamar o Applet

<html>
<head>
<title>Aula de Applet Java </title>
</head>
<body>
<applet code="Graficobarras.class" width=900 height=550>
</applet>
</body>
</html>

Bom pra quem me ajudar tá em anexo os códigos do HTML e o Applet para ficar mais fácil… ok…

Agradeço desde já…

2 Respostas

ASOBrasil

dracon,

Eu sei que vc disse que não quer mudar nada da lógica do código, … mas … pq vc não usa o JFreeChart que já é uma ferramenta bem consolidada no mercado para gerar gráficos. E não é dificil usar o JFreeChart! Vc vai acabar escrevendo menos código e vai poder criar mais tipos de gráficos. Infelizmente não vou poder te ajudar com AWT.

Links tutoriais:
http://www.portaljava.com.br/home/modules.php?name=Content&pa=showpage&pid=126

http://www.furutani.eti.br/tutoriais/CRIANDO_GRAFICOS_COM_JSP_CEWOLF_JFREECHART_MYSQL.pdf

ASOBrasil

dracon

ASOBrasil:
dracon,

Eu sei que vc disse que não quer mudar nada da lógica do código, … mas … pq vc não usa o JFreeChart que já é uma ferramenta bem consolidada no mercado para gerar gráficos. E não é dificil usar o JFreeChart! Vc vai acabar escrevendo menos código e vai poder criar mais tipos de gráficos. Infelizmente não vou poder te ajudar com AWT.

Links tutoriais:
http://www.portaljava.com.br/home/modules.php?name=Content&pa=showpage&pid=126

http://www.furutani.eti.br/tutoriais/CRIANDO_GRAFICOS_COM_JSP_CEWOLF_JFREECHART_MYSQL.pdf

ASOBrasil

Cara… eu quero fazer desse jeito que está aí… por enquando… pois depois eu vou incrementar… ele usando o JFreeChart…Mas de imediato tem que ser assim… pois eu estou apredendo Java na Facul… então eu só sei gerar o gráfico com isso que eu tenho.

Criado 10 de maio de 2006
Ultima resposta 11 de mai. de 2006
Respostas 2
Participantes 2