E aê galera, blz?
Estou tendo dificuldades com desenhos polimórficos.
Eu criei uma classe abstrata chamada Desenho e mais duas outras chamadas de Circulo e Retangulo, que extendem a classe abstrata Desenho.
Eu implementei polimorficamente as clases Circulo e Retangulo, mas isso funcionou em JFrames diferentes.
Quando tentei implementar o Circulo e Retangulo no mesmo JFrame não deu erro, mas só apareceu um deles.
A clase Desenho é essa:
import java.awt.*;
import javax.swing.*;
public abstract class Desenho extends JPanel
{
public abstract void desenho(Graphics g);
public void paintComponent(Graphics g)
{
super.paintComponent(g);
desenho(g);
}
}
A classe Retangulo é:
import java.awt.*;
import javax.swing.*;
public class Retangulo extends Desenho
{
public void desenho(Graphics g)
{
g.drawRect(10, 10, 50, 50);
}
}
import java.awt.*;
import javax.swing.*;
public class Circulo extends Desenho
{
public void desenho(Graphics g)
{
g.drawOval(10, 70, 40, 40);
}
}
E por fim, na classe Main, eu criei um JFrame, instanciei as classes Circulo e Retangulo e os adicionei ao frame:
add(circ.desenho(g)), add(rect.desenho(g)), mas só um dels aparece!
import javax.swing.*;
import java.awt.*;
public class Main extends JFrame
{
Retangulo rect;
Circulo circ;
public Main()
{
rect = new Retangulo();
circ = new Circulo();
this.setSize(500, 500);
this.setVisible(true);
this.add(rect);
this.add(circ);
}
public static void main(String args[])
{
Main m = new Main();
}
}
Agora não preciso mais enfiar todos os gráficos em um unico método paintComponent(ficava um verdadeiro “tripão procedural”)