Je tente de créer deux composants qui ont chacun une méthode paintComponent()
- Le but étant que l'objet parent va peindre art par défaut, et l'objet enfant peut alors peindre dessus . Un exemple pourrait être de créer des cartes à jouer: vous avez une classe parente Card
qui peint une carte par défaut, puis des classes spécifiques à la suite qui étendent Card
et peignent leurs détails par-dessus.Peinture en "couches" avec paintComponent() et l'héritage
Voici un diagramme de ce que je suis en train d'accomplir:
Voici le code, je travaille avec. Mon problème spécifique est: lorsque le composant est dessiné - si la classe enfant n'a pas de méthode paintComponent
- l'art des parents est dessiné. Cependant, si j'implémente une méthode paintComponent
sur l'enfant, les parents ne sont pas dessinés, seulement les enfants.
Voici mon code:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
abstract public class Tile extends JPanel {
public static final int DEFAULT_WIDTH = 100;
public static final int DEFAULT_HEIGHT = 100;
@Override public void paintComponent(Graphics g){
//Set Size
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
Graphics2D g2 = (Graphics2D)g;
//Draw default art
}
@Override public Dimension getMinimumSize()
{ return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT); }
@Override public Dimension getPreferredSize()
{ return getMinimumSize(); }
//.....
}
import javax.swing.*;
import java.awt.*;
public class CharacterTile extends Tile {
protected char symbol;
public CharacterTile(char symbol){
this.symbol = symbol;
}
@Override public void paintComponent(Graphics g){
super.paintComponents(g);
Graphics2D g2 = (Graphics2D)g;
//Draw details
}
//.....
}
Je suis désolé, mais ce n'est pas ce que j'essaie d'accomplir. J'ai modifié la question pour être plus précis. –