[Resolvido] Controlando desenho no Java

Bom dia gente, tudo bem com vocês? Estou com uma pequena duvida sobre desenhar no java.

Bom, já consegui desenhar no java (código da JPanel abaixo) e tudo mais, só que eu queria controlar a imagem exibindo e escondendo partes do desenho da forca.

Eu uso a JPanel dentro de um JFrame, mas quando tento usar algum método do JPane que criei no JFrame, nao consigo, pior que os métodos estão todos public.

Será que existe uma outra forma de controlar a imagem?

Vlws gente :wink:

package Telas;

import Teste.*;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JPanel;
 
public class JDesenhoForca extends JPanel {

    //Atributos
    boolean cabeca = true;
    boolean tronco = false;
    boolean bracoEsquerda = false;
    boolean bracoDireita = false;
    boolean peEsquerda = false;
    boolean peDireita = false;
    
    //Métodos contrutores
    public JDesenhoForca(){}
    public JDesenhoForca(boolean cabeca, boolean tronco, boolean bracoEsquerda, boolean bracoDireita, boolean peEsquerda,boolean peDireita){
        this.cabeca = cabeca;
        this.tronco = tronco;
        this.bracoEsquerda = bracoEsquerda;
        this.bracoDireita = bracoDireita;
        this.peEsquerda = peEsquerda;
        this.peDireita = peDireita; 
    }
    
    //Métodos
    public boolean isCabeca() {
        return cabeca;
    }

    public void setCabeca(boolean cabeca) {
        this.cabeca = cabeca;
    }

    public boolean isTronco() {
        return tronco;
    }

    public void setTronco(boolean tronco) {
        this.tronco = tronco;
    }

    public boolean isBracoEsquerda() {
        return bracoEsquerda;
    }

    public void setBracoEsquerda(boolean bracoEsquerda) {
        this.bracoEsquerda = bracoEsquerda;
    }

    public boolean isBracoDireita() {
        return bracoDireita;
    }

    public void setBracoDireita(boolean bracoDireita) {
        this.bracoDireita = bracoDireita;
    }

    public boolean isPeEsquerda() {
        return peEsquerda;
    }

    public void setPeEsquerda(boolean peEsquerda) {
        this.peEsquerda = peEsquerda;
    }

    public boolean isPeDireita() {
        return peDireita;
    }

    public void setPeDireita(boolean peDireita) {
        this.peDireita = peDireita;
    }

    @Override
    protected void paintComponent(Graphics g) {
        //Fundo branco
        g.setColor(Color.white);
        g.fillRect(0, 0, 500, 500);

        //Forca
        g.setColor(Color.BLACK);
        g.fillRect(25, 10, 10, 115);
        g.fillRect(25, 10, 50, 10);

        //Bonequinhu
        g.setColor(Color.BLACK);

        if (this.isCabeca()) {
            g.fillOval(50, 30, 30, 30);//cabeca 
        }
        if (this.isTronco()) {
            g.drawLine(65, 40, 65, 100);//tronco
        }
        if (this.isBracoEsquerda()) {
            g.drawLine(65, 65, 50, 85);//braco esquerdo
        }
        if (this.isBracoDireita()) {
            g.drawLine(65, 65, 80, 85);//braco direita
        }
        if (this.isPeEsquerda()) {
            g.drawLine(65, 100, 55, 120); //pe esquerdo
        }
        if (this.isPeDireita()) {
            g.drawLine(65, 100, 75, 120); //pe direita
        }
    }
}

Experimente fazer isto:

    public void setPeDireita(boolean peDireita) {  
        this.peDireita = peDireita;  
        validate();
    } 

A propósito, seu pé é masculino (mesmo que você atenda por um nome feminino na vida real, o que acredito que não seja o caso), portanto ele não é o “pé direita” e sim o “pé direito”.

vc não tem acesso aos métodos publicos do seu “JDesenhoForca” quando insere ele dentro do JFrame ?
verifique se vc esta instanciando desta forma:

JDesenhoForca panel = new JDesenhoForca();

e não desta …

JPanel panel = new JDesenhoForca();

Entendi, acho que você matou a questão Margel Douglas . Tava usando a variavel de referencia criada pelo assistente do NetBeans, apontando para uma subclasse, lol! Pior que tava estudando sobre polimorfismo, herança nesses dias…

Vlws ai galera!