Class graphics?

BretagneMateo Messages postés 6 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 16 mars 2005 - 15 mars 2005 à 18:37
BretagneMateo Messages postés 6 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 16 mars 2005 - 16 mars 2005 à 16:41
bonjour a tous et a toutes, j'ai un probleme pour ajouter ou
superposer un element graphic dans un JFrame. Dans ma Frame j'ai des
bouttons, des labels, des TextBoxs et Une image (le plateau de jeu)
implemente dans un JLabel. Ce que je veux c'est dessiner les joueurs
sur le plateau a l'aide de la classe Graphics ou autre chose si vous
avez des idees...



Voici le constructeur de ma frame :

public GameWindow() {

super("Game");



setSize(600, 460);

setVisible(true);



board = new ImageIcon(BOARDPATH);

Dice1 = new ImageIcon(DICE0);

Dice2 = new ImageIcon(DICE0);




//board.setLocation(150,0);


//

PlayerName = new JTextField(15);

CurrentCash = new JTextField("1500");

PlayerName.setEditable(false);

CurrentCash.setEditable(false);



guiContainer = getContentPane();



guiContainer.setLayout(new BorderLayout());

leftPanel = new JPanel(new GridLayout(6, 0));



leftPanel.add(PlayerName);

leftPanel.add(Cash = new JLabel("Current Cash :"));

leftPanel.add(CurrentCash);

leftPanel.add(RollDices = new JButton("Roll Dices"));

leftPanel.add(ImageDice1 = new JLabel(Dice1));

leftPanel.add(ImageDice2 = new JLabel(Dice2));



guiContainer.add(Imageboard = new JLabel(board), BorderLayout.CENTER);

guiContainer.add(leftPanel, BorderLayout.WEST);

guiContainer.add(new ButtonPanel(), BorderLayout.SOUTH);

RollDices.addActionListener(this);

}



J'ai essaye a titre de test :



public void paint( Graphics g2 ) {



g2 = Imageboard.getGraphics();

g2.setColor(Color.blue);

g2.fillOval(150,150, 15, 15);

}



mais ca detruit toutles elements de ma frame.



Si vous connaissez une methode pour superposer des elements graphiques
sur un JLabel, merci de prendre un peu de votre precieux temp de
prgrammeur(euse)

3 réponses

toffe12 Messages postés 53 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 23 septembre 2005 1
16 mars 2005 à 10:53
salut,

dans ta methode paint tu a oublier de faire appel à la methode paint de la classe mere
rajoute super.paint() .
0
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
16 mars 2005 à 14:56
c'est pas ca! fo pas mettre l'image ds un label: essaye ce truc: tu crée une class Board héritant de panel ou Canevas:



class Board extends Panel{

Image board

Board(){

setPreferedSize(x,y);

board=new ImageIcon("");

}



public void paint(Graphics gPanel){

update(gPanel);

}



public void update(Graphics g){

Graphics gImage=board.getGraphics();

gImage.fillOval(.......;

.......

g.drawImage(board);

}

}



et dans ta Frame tu vas inserrer une instance de Board dans CENTER.

ok?
0
BretagneMateo Messages postés 6 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 16 mars 2005
16 mars 2005 à 16:41
OK c'est pas mal ta methode, mais suis desole j'apprend vraiment tout cette annee :

- c'est impossible de cree une instance du style, Image board = ImageIcon(); --> pas concrete

-dans la methode paint, le g.drawImage me gueule dessus du genre :



The method drawImage(Image, int, int, int, int, int, int, int, int, ImageObserver) in the type

Graphics is not applicable for the arguments (GameWindow.ImageBoard, int, int, null, null)





voila mon code:



private ImageBoard board;



public class ImageBoard extends JPanel {

ImageIcon board;



ImageBoard() {

setSize(333, 333);

board = new ImageIcon(BOARDPATH);

}

}



guiContainer.add(board = new ImageBoard(), BorderLayout.CENTER);



public void paint(Graphics gPanel){

update(gPanel);

}



public void update(Graphics g){

Graphics gImage = board.getGraphics();

gImage.fillOval(150,150,15,15);

g.drawImage(board);



}



Merci beaucoup, et au fait suis des cotes d'armor, j'etais etudiant a l'IUT de Lannion

tchuss
0
Rejoignez-nous