Como xamar varias funções "paint()"

3 respostas
O

olá…

to com um problema…to tentando criar um desenho na tela…

tipo, cada inserção q eu faco no Frame eu quero q objeto seja desenhado na tela, pra ele se desenhado vai te q xama a função paint() do mesmo…

tipo assim:

frame.getContentPanel.Add(classDesenho1);
– ai ele executaria a função “paint()” da classe “classDesenho1” e desenharia o objeto na tela apartir da função…

frame.getContentPanel.Add(classDesenho2);
– ai ele executaria a função “paint()” da classe “classDesenho2” e a desenharia tb

e assim por diante…

como eu faço isso??..tipo … não q tem q ser assim, queria sb como fazer algo +ou- desse modo, onde eu desenho varios objetos, porem, não ao mesmo tempo, pode ser q eu desenho um objeto no inicio de uma função e soh no final dela irei, ou não, desenhar outro…como faço isso?/…t++ obrigado…

3 Respostas

J
Olá irmão. tenho um código aqui que se voce olhar com cuidado pode te ajudar.
import java.awt.Event;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class e6xe632 extends JApplet implements ActionListener { 
	
	JLabel expLabel,inputLabel;
	JTextField inputField;
	JButton testeButton;
	int input=0,result,
    num1,num2;
	int numero;
	int message, getMessage;
	boolean firstTime;
	
	
	public void init(){
		
		
		//configura container
		Container container = getContentPane();
		container.setBackground(Color.white);
		container.setLayout(new FlowLayout());
		
		//cria rotulo explicativo
		expLabel=
			new JLabel ("Exercícios de Multiplicação");
		container.add(expLabel);
		
		//cria rotulo para entrada de dados
		inputLabel=
			new JLabel("DIGITE SUA RESPOSTA");
		container.add(inputLabel);
		
		//cria entrada para a resposta certa
		inputField=
			new JTextField(10);
		container.add(inputField);
		
		//cria butão para testar a resposta
		testeButton=
			new JButton ("TESTAR");
		testeButton.addActionListener(this);
		container.add(testeButton);
		
		
		firstTime=true;
		
		
	}//fim do metodo init
	
	public void actionPerformed (ActionEvent e){


		showStatus("Quanto é "+num1+" vezes "+num2);
		
		input = Integer.parseInt( inputField.getText());

		
		inputField.setText("");
		repaint();

	}//fim do metodo action
	
	public void start(){
		num1=random();
		num2=random();
			
	}

	public int random (){

		return numero=(1+(int)(Math.random()*9));
	}

	
public void mensagem(Graphics g){

	
	if(firstTime==true){
		g.drawString( "Pressione TESTAR para iniciar",10,130);
		firstTime=false;
	}else 
		if(input==(num1*num2)){
			switch (randomMessage()){
			
			case 1:

			g.drawString("PARABENS!",55,145);
			g.drawString("Resposta Correta",40,160);
			
			num1=random();
			num2=random();
			
			showStatus("Quanto é "+num1+" vezes "+num2);
			break;
			
			
			case 2:
				g.drawString("EXELENTE!",55,145);
				
				num1=random();
				num2=random();
				
				showStatus("Quanto é "+num1+" vezes "+num2);
				break;
				
				
			case 3:
				g.drawString("BOM TRABALHO",55,145);
				g.drawString("Continue assim",40,160);
				
				num1=random();
				num2=random();
				
				showStatus("Quanto é "+num1+" vezes "+num2);
				break;
				
				
				
			case 4:
				g.drawString("MUITO BEM",55,145);
				g.drawString("Você está se superando",40,160);
				
				num1=random();
				num2=random();
				
				showStatus("Quanto é "+num1+" vezes "+num2);
				break;

			}
		}else if(input!=(num1*num2)){
			switch (randomMessage()){
			
			case 1:
			g.drawString("RESPOSTA ERRADA",50,145);
			g.drawString("Tente novamente",50,160);
			break;
			case 2:
				g.drawString("QUASE",50,145);
				g.drawString("Tente novamente",50,160);
				break;
			case 3:
				g.drawString("NÃO DESISTA",50,145);
				g.drawString("Tente novamente",50,160);
				break;
			case 4:
				g.drawString("CONTINUE TENTANDO",50,145);
				g.drawString("Você consegue",50,160);
				break;
			}
		}
}


	public int randomMessage(){
		
		return message=1+(int)(Math.random()*4);
		
	}
	



public void paint (Graphics g){
	
	super.paint(g);
	
     mensagem(g);
   
}
}
O

infelizmente não intendi … mas obrigado pela ajuda

J

Coloca o código do desenho dentro do método paintComponent(Graphics variavel). Esse método é o correspondente do paint() dos applet para aplicativos.

Para forçar o redesenho como num comando de update você usa o repaint() que não exige parametro e por isso é mais fácil que o usar paint(Graphics var).

Exemplo do paintComponents: public void paintComponent(Graphics comp) { Graphics2D comp2D = (Graphics2D)comp; Font type = new Font("monospaced", Font.BOLD, 14); comp2D.setFont(type); comp2D.setColor(getBackground()); comp2D.fillRect(0, 0, getSize().width, getSize().height); comp2D.setColor(Color.black); for (int i = 0; i < headlines.length; i++) comp2D.drawString(headlines[i], 5, y + (20 * i)); }

Criado 30 de junho de 2006
Ultima resposta 2 de jul. de 2006
Respostas 3
Participantes 3