Problem beim Laden von Bildern

Status
Nicht offen für weitere Antworten.

T!b3r!|_|$

Mitglied
hallo. ich habe in meinem Programm in der startklasse einen zufallsgenerator erstellt, der eine zahl zwischen 1 und 13 auswählt. je nach zahl wird durch eine switch anweisung ein image geladen. durch eine andere klasse "sollte" das bild dann gezeichnet werden..doch es passiert rein gar nichts (außer dass das programm beim anzeigen abstürzt), obwohl kein error beim kompillieren angezeigt wird und seit ich das die image component klasse habe, läuft das prog total langsam..kan mir da einer vielleicht helfen? bitte


Code:
static Random random = new Random();
         static Image startcardp11, startcardp12, startcardpc1, startcardpc2;
         public static void game_pvpc()
        {
            switchCard(startcardp11);
            switchCard(startcardp12);
            switchCard(startcardpc1);
            startcardpc2 = Toolkit.getDefaultToolkit().getImage( "backside.gif" );
            blackJack_graphicComponent_drawImage dI1 = new blackJack_graphicComponent_drawImage();
            dI1.setImage(startcardp11);
            dI1.setLocation(30,400);
            blackJack_grafik.f1.getContentPane().add( dI1 ); //blackJack_grafik ist die klasse in der der JFrame f1 ist
            blackJack_grafik.f1.validate();
        }
        public static int zufallsGen()
        {
            return 1 + Math.abs(random.nextInt())%13;
        }
        public static void switchCard(Image imageCard)
        {
            switch (zufallsGen())
            {
                case 1: imageCard = Toolkit.getDefaultToolkit().getImage( "two_heart.gif" );
                break;
                case 2: imageCard = Toolkit.getDefaultToolkit().getImage( "three_heart.gif" );
                break;
                .
                .
                .
                case 13: imageCard = Toolkit.getDefaultToolkit().getImage( "ass_heart.gif" );
                break;
            }
         }

Code:
import javax.swing.*;
import java.awt.*;

public class blackJack_graphicComponent_drawImage extends JComponent
{
  private Image image;
  private int x;
  private int y;

  public void paintComponent( Graphics g)
  {
    g.drawImage(image, x, y, this);
  }

  public void setImage( Image image ){ this.image = image; }
  public void setLocation( int x, int y ){
    this.x = x;
    this.y = y;
  }
}
 
ich habe jetzt herausgefunden, dass die klasse "blackJack_graphicComponent_drawImage" funktionsfähig ist, als ich ihr direkt ein bild zugewiesen habe.
also muss der fehler irgendwo an den von mir markierten stellen liegen, weis aber nicht was daran falsch ist:

Code:
static Random random = new Random();
         static Image startcardp11, startcardp12, startcardpc1, startcardpc2;
         public static void game_pvpc()
        {
            switchCard(startcardp11); //VIELLEICHT IST HIER DER FEHLER
            switchCard(startcardp12); //VIELLEICHT IST HIER DER FEHLER
            switchCard(startcardpc1); //VIELLEICHT IST HIER DER FEHLER
            startcardpc2 = Toolkit.getDefaultToolkit().getImage( "backside.gif" ); /*diese Zeile habe ich geprüft: sie funktioniert*/
            blackJack_graphicComponent_drawImage dI1 = new blackJack_graphicComponent_drawImage();
            dI1.setImage(startcardp11); //wenn ich hier direkt ein bild zuweise, dann geht es
            dI1.setLocation(30,400);
            blackJack_grafik.f1.getContentPane().add( dI1 ); //blackJack_grafik ist die klasse in der der JFrame f1 ist
            blackJack_grafik.f1.validate();
        }
        public static int zufallsGen() //zufallsGen() funktioniert
        {
            return 1 + Math.abs(random.nextInt())%13;
        }
        public static void switchCard(Image imageCard)  /*ODER DER FEHLER LIEGT IN DIESER METHODE, WAS ICH VERMUTE, HAB ABER KEINE AHNUNG WO ER SEIN KÖNNTE*/
        {
            switch (zufallsGen())
            {
                case 1: imageCard = Toolkit.getDefaultToolkit().getImage( "two_heart.gif" );
                break;
                case 2: imageCard = Toolkit.getDefaultToolkit().getImage( "three_heart.gif" );
                break;
                .
                .
                .
                case 13: imageCard = Toolkit.getDefaultToolkit().getImage( "ass_heart.gif" );
                break;
            }
         }

PS: @P3AC3MAK3R: werde in zukunft präziesere Namen wählen
 
Du setzt hier ein neues Image für "imageCard". Nur ist "imageCard" hier eine Methodenvariable, die nach dem beenden von "switchCard" so oder so vernichtet wird...
Code:
 case 1: imageCard = Toolkit.getDefaultToolkit().getImage( "two_heart.gif" );

Verlange eine Instanz von "blackjack_etc." als Argument, und setz dort das neue Image:
Code:
 case 1: dll.setImage( Toolkit.getDefaultToolkit().getImage( "two_heart.gif" ) );

mfg Beni
 
ähm danke..aber könntest du das mit der instanz genauer erklären? ich kenn mich noch immer ned aus...bin leider no ned so gut in java
 
Instanz = Objekt

Code:
        public static void switchCard(blackJack_graphicComponent_drawImage component)
        {
            switch (zufallsGen())
            {
                case 1: component.setImage( Toolkit.getDefaultToolkit().getImage( "two_heart.gif" ));
                break;
                case 2: component.setImage( Toolkit.getDefaultToolkit().getImage( "three_heart.gif" ));
                break;
                .
                .
                .
                case 13: component.setImage( Toolkit.getDefaultToolkit().getImage( "ass_heart.gif" ));
                break;
            }
         }
 
und wie muss ich die methode nun aufrufen? denn mit switchCard(); geht es nicht.

auf jeden fall mal danke für das mit der instanz..klingt total logisch
 
halt so:
Code:
switchCard( dieComponentBeiDerWasVeraendertWird );
 
Die "blackJack_graphicComponent_drawImage" dessen Image neu gesetzt werden soll.

Oder sprechen wir aneinander vorbei? ???:L
 
ah..du meinst das:
Code:
public class blackJack_graphicComponent_drawImage extends JComponent
{
  private Image image;   //DAS HIER NUR HALT NED PRIVAT
  private int x;
  private int y;
  

  public void paintComponent( Graphics g)
  {
    g.drawImage(image, x, y, this);
  }

  public void setImage( Image image ){ this.image = image; }
  public void setLocation( int x, int y ){
    this.x = x;
    this.y = y;
  }
}
 
ach ich bekomms einfach ned auf die reihe. könntest dus mir bitte so machen dass es geht? bitte. wenn ich das starte kommen vier gleiche karten und zwar die background karten. ich möchte aber, dass 4 verschiedene karten erscheinen.

Code:
import javax.swing.*;
import java.awt.*;

public class blackJack_graphicComponent_drawImage extends JComponent
{
  public static Image image;
  private int x;
  private int y;
  

  public void paintComponent( Graphics g)
  {
    g.drawImage(image, x, y, this);
  }

  public void setImage( Image image ){ this.image = image; }
  public void setLocation( int x, int y ){
    this.x = x;
    this.y = y;
  }
}

Code:
.
.
.
public static void game_pvpc()
        {
            blackJack_graphicComponent_drawImage dI1 = new blackJack_graphicComponent_drawImage();
            blackJack_graphicComponent_drawImage dI2 = new blackJack_graphicComponent_drawImage();
            blackJack_graphicComponent_drawImage dI3 = new blackJack_graphicComponent_drawImage();
            blackJack_graphicComponent_drawImage dI4 = new blackJack_graphicComponent_drawImage();
            dI1.setLocation(20, 50);
            switchCard();
            blackJack_grafik.f1.getContentPane().add( dI1 );
            blackJack_grafik.f1.validate();
            dI2.setLocation(170, 50);
            switchCard();
            blackJack_grafik.f1.getContentPane().add( dI2 );
            blackJack_grafik.f1.validate();
            dI3.setLocation(20, 250);
            switchCard();
            blackJack_grafik.f1.getContentPane().add( dI3 );
            blackJack_grafik.f1.validate();
            startcardpc2 = Toolkit.getDefaultToolkit().getImage( "backside.gif" );
            dI4.setImage(startcardpc2);
            dI4.setLocation(170,250);
            blackJack_grafik.f1.getContentPane().add( dI4 );
            blackJack_grafik.f1.validate();
            
        }
        public static void game_pvp(){
        
            
        }
        public static int zufallsGen()
        {
            return 1 + Math.abs(random.nextInt())%13;
        }
        public static void switchCard()
        {
            blackJack_graphicComponent_drawImage d1 = new blackJack_graphicComponent_drawImage();
            int zufall1 = zufallsGen();
            switch (zufall1)
            {
                case 1: d1.setImage( Toolkit.getDefaultToolkit().getImage( "two_heart.gif" ));
                break;
                case 2: d1.setImage( Toolkit.getDefaultToolkit().getImage( "three_heart.gif" ));
                break; 
                case 3: d1.setImage( Toolkit.getDefaultToolkit().getImage( "four_heart.gif" ));
                break;
                case 4: d1.setImage( Toolkit.getDefaultToolkit().getImage( "five_heart.gif" ));
                break;
                case 5: d1.setImage( Toolkit.getDefaultToolkit().getImage( "six_heart.gif" ));
                break;
                case 6: d1.setImage( Toolkit.getDefaultToolkit().getImage( "seven_heart.gif" ));
                break;
                case 7: d1.setImage( Toolkit.getDefaultToolkit().getImage( "eight_heart.gif" ));
                break;
                case 8: d1.setImage( Toolkit.getDefaultToolkit().getImage( "nine_heart.gif" ));
                break;
                case 9: d1.setImage( Toolkit.getDefaultToolkit().getImage( "ten_heart.gif" ));
                break;
                case 10: d1.setImage( Toolkit.getDefaultToolkit().getImage( "boy_heart.gif" ));
                break;
                case 11: d1.setImage( Toolkit.getDefaultToolkit().getImage( "dame_heart.gif" ));
                break;
                case 12: d1.setImage( Toolkit.getDefaultToolkit().getImage( "king_heart.gif" ));
                break;
                case 13: d1.setImage( Toolkit.getDefaultToolkit().getImage( "ass_heart.gif" ));
                break;
            }
}
.
.
.
 
Versuchs mal so:

Code:
import javax.swing.*;
import java.awt.*;

public class blackJack_graphicComponent_drawImage extends JComponent
{
  public static Image image;
  private int x;
  private int y;
  

  public void paintComponent( Graphics g)
  {
    g.drawImage(image, x, y, this);
  }

  public void setImage( Image image ){ this.image = image; }
  public void setLocation( int x, int y ){
    this.x = x;
    this.y = y;
  }
}

Code:
.
.
.
public static void game_pvpc()
        {
            blackJack_graphicComponent_drawImage dI1 = new blackJack_graphicComponent_drawImage();
            blackJack_graphicComponent_drawImage dI2 = new blackJack_graphicComponent_drawImage();
            blackJack_graphicComponent_drawImage dI3 = new blackJack_graphicComponent_drawImage();
            blackJack_graphicComponent_drawImage dI4 = new blackJack_graphicComponent_drawImage();
            dI1.setLocation(20, 50);
            switchCard( dI1 );
            blackJack_grafik.f1.getContentPane().add( dI1 );
            blackJack_grafik.f1.validate();
            dI2.setLocation(170, 50);
            switchCard( dI2 );
            blackJack_grafik.f1.getContentPane().add( dI2 );
            blackJack_grafik.f1.validate();
            dI3.setLocation(20, 250);
            switchCard( dI3 );
            blackJack_grafik.f1.getContentPane().add( dI3 );
            blackJack_grafik.f1.validate();
            startcardpc2 = Toolkit.getDefaultToolkit().getImage( "backside.gif" );
            dI4.setImage(startcardpc2);
            dI4.setLocation(170,250);
            blackJack_grafik.f1.getContentPane().add( dI4 );
            blackJack_grafik.f1.validate();
            
        }
        public static void game_pvp(){
        
            
        }
        public static int zufallsGen()
        {
            return 1 + Math.abs(random.nextInt())%13;
        }
        public static void switchCard( blackJack_graphicComponent_drawImage d1 )
        {
            int zufall1 = zufallsGen();
            switch (zufall1)
            {
                case 1: d1.setImage( Toolkit.getDefaultToolkit().getImage( "two_heart.gif" ));
                break;
                case 2: d1.setImage( Toolkit.getDefaultToolkit().getImage( "three_heart.gif" ));
                break; 
                case 3: d1.setImage( Toolkit.getDefaultToolkit().getImage( "four_heart.gif" ));
                break;
                case 4: d1.setImage( Toolkit.getDefaultToolkit().getImage( "five_heart.gif" ));
                break;
                case 5: d1.setImage( Toolkit.getDefaultToolkit().getImage( "six_heart.gif" ));
                break;
                case 6: d1.setImage( Toolkit.getDefaultToolkit().getImage( "seven_heart.gif" ));
                break;
                case 7: d1.setImage( Toolkit.getDefaultToolkit().getImage( "eight_heart.gif" ));
                break;
                case 8: d1.setImage( Toolkit.getDefaultToolkit().getImage( "nine_heart.gif" ));
                break;
                case 9: d1.setImage( Toolkit.getDefaultToolkit().getImage( "ten_heart.gif" ));
                break;
                case 10: d1.setImage( Toolkit.getDefaultToolkit().getImage( "boy_heart.gif" ));
                break;
                case 11: d1.setImage( Toolkit.getDefaultToolkit().getImage( "dame_heart.gif" ));
                break;
                case 12: d1.setImage( Toolkit.getDefaultToolkit().getImage( "king_heart.gif" ));
                break;
                case 13: d1.setImage( Toolkit.getDefaultToolkit().getImage( "ass_heart.gif" ));
                break;
            }
}
.
.
.
[/quote]
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben