problème d'affichage de fond dans une frame 2

akil972
problème d'affichage de fond dans une frame 2

j'ai ce message en information de sortie je pense pas que c une erreur :

Quote:

java.lang.NullPointerException
at tido.Tapis.paintComponent(Tapis.java:134)
at javax.swing.JComponent.paint(JComponent.java:808)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4794)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
at javax.swing.JComponent.paint(JComponent.java:798)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1312)
at sun.awt.RepaintArea.paint(RepaintArea.java:177)

at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3678)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Process completed.

K-lo

C'est quoi ta question là ?

T'as déjà créé un topic avec le même titre !
C'était à mettre à la suite ?

:?:

Niroken

Dans ce cas de figure :

Le message d'erreur provient de la ligne 134 (pas très parlant).
Mais de la fonction paintComponent().
Donc a la limite si tu ns passe le code de cette fonction
on pourra regarder.

Le nullPointer exception provient en général du fait que tu essayes
de faire une opération sur un ojet non initialisé :
Exemple :

String toto;

public void ConcatString()
{
    toto += "a";
}

Si tu appelles la méthode ConcatString() ca causera un
nullPointerException puisque toto n'est pas initialisé.

Dans le cadre graphique, ca revient à dire par exemple
que tu veux changer la couleur de fond d'un boutton non
initialisé etc..

Bonne chance

akil972

je voudrais afficher des pièces de domino dans ma Frame.

Voici le code que j'utilise pour dessiner mes images :

public class Tapis extends JPanel {
...
Tapis(Joueur[] joueurs) {

tapiscarte = new ImageIcon("C:\\image\\Tapis.gif");



}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// jeux joueur sud
int nb = 0;
int posx = 125;
int posy = 475;
g.drawImage(tapiscarte.getImage(), posx, posy, null); // cette d'image ce charge
nb = lesjoueurs[0].main.size();
for (int v = 0; v < nb; v++) {
Domino ledomino =(Domino)lesjoueurs[0].main.get(v);
g.drawImage(ledomino.getImage(), 0,0, null); posx = posx + 40; //C'est ici que je suis supposé dessiner mes images.
}


} // FIn class

Ici c'est ma classe Partie qui doit charger l'image :

public class Partie2 extends JFrame {

Partie2() {

setTitle("Partie de Domino");
setSize(615,660);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().add(Fen, BorderLayout.CENTER);
setResizable(false);
Fen.add(tapis); // ici j'ajoute ma class Tapis ou j'ai dessiner mes images
Fen.setLayout(null);
...


setVisible(true);
}
public static void main(String[] args) {
Partie2 lejeu=new Partie2();
}
}


Problème d'affichage d'image

--------------------------------------------------------------------------------

bonjour,
je voudrais afficher des pièces de domino dans ma Frame.

Voici le code que j'utilise pour dessiner mes images :

Code :

public class Tapis extends JPanel {
...
Tapis(Joueur[] joueurs) {

tapiscarte = new ImageIcon("C:\\image\\Tapis.gif");



}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// jeux joueur sud
int nb = 0;
int posx = 125;
int posy = 475;
g.drawImage(tapiscarte.getImage(), posx, posy, null); // cette d'image ce charge
nb = lesjoueurs[0].main.size();
for (int v = 0; v < nb; v++) {
Domino ledomino =(Domino)lesjoueurs[0].main.get(v);
g.drawImage(ledomino.getImage(), 0,0, null); posx = posx + 40; //C'est ici que je suis supposé dessiner mes images.
}


}

Ici c'est ma classe Partie qui doit charger l'image

Code :


public class Partie2 extends JFrame {

Partie2() {

setTitle("Partie de Domino");
setSize(615,660);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().add(Fen, BorderLayout.CENTER);
setResizable(false);
Fen.add(tapis); // ici j'ajoute ma class Tapis ou j'ai dessiner mes images
Fen.setLayout(null);
...


setVisible(true);
}
public static void main(String[] args) {
Partie2 lejeu=new Partie2();
}
}


je pensais qu'en ajoutant tapis à ma class Partie2, que les images se chargeront t seule. Mais non !

voici ma class domino :

Code :
public class Domino implements Cloneable {

int a;
int b;
ImageIcon image;


public Domino ( int fa, int fb)
{
a = fa;
b=fb;
image=new ImageIcon ("image/"+a+":"+b+".jpg");
}

public Object clone() throws CloneNotSupportedException

{

return new Domino(a,b);
}


public int geta (){

return b;
}
public int getb (){

return a;
}
public Image getImage(){
return image.getImage();
}
void retourne() {
int d = b;
b = a;
a = d;
}
}