Problem z wczytaniem grafiki do apletu

0

Witam mam taki problem a mianowicie robię gierkę (nic szczególnego,dopiero się uczę) chciałbym wczytać obrazki z folderu typu ściana,podłoga,przeciwnik.Pisze w javie w NetBeans 7.3.Jak niby wczytuje moje obrazki to nie pojawią się w ogóle, jest dobrze jak w programie np. przeciwnik to kwadrat czy okrąg.
Jak by ktoś wiedział jak wczytać te obrazki byłbym wdzięczny za pomoc

0

Możesz przetłumaczyć opis problemu na język polski?

0

Mam problem aby wczytać obrazki z folderu do apletu

0

Jaka wersja Javy? W wersji 1.7.0_25 nastąpiła zmiana i metoda getCodeBase() zwraca null dla apletów uruchamianych lokalnie => standardowy sposób getImage(getCodeBase(),nazwaObrazka) nie działa w przeglądarkach, jeśli plik HTML z apletem nie jest pobierany z sieci. Dla testowania apletów napisałem własną metodę getCodeBase()

    public URL getCodeBase()
    {
        URL url = super.getCodeBase();
        if(url != null)
        {
            return url;
        }
        try
        {
            String s = "file:"+getDocumentBase().getPath();
            int index = s.lastIndexOf("/");
            s = s.substring(0,index+1);
            return new URL(s);
        }
        catch(Exception e)
        {
            return null;
        }
    }
0

Nadal nie chce mi wyświetlać obrazków robię tak:
exit = getImage(getDocumentBase(),"obrazki/exit.gif");
i tak:
exit = getImage(getCodeBase(),"obrazki/exit.gif");
nie wiem czy źle to robię?

0
  1. Jaka wersja Javy?
  2. W którym miejscu apletu jest wiersz getImage(...)?
  3. Której wersji metody getCodeBase() używasz, tej ze standardowej biblioteki czy tej którą podałem w poprzednim poście?
  4. Uruchamiaj aplet w przeglądarce (ewentualnie w programie appletviewer).
0
  1. nie wiem czy o to chodzi:
    javafx-simples-2.2.7
    jdk-7u15

2.wiersz getImage(...) jest w "public void init()"
3. nie stosuje tej co podałeś, mam taką bibliotekę import java.awt.Image;
4. Jak mam uruchamiać ten aplet w przeglądarce? jak uruchamiam ten program to uruchamia mi się tylko okienko z programem a nie przeglądarka
może coś źle rozumiem proszę o wyrozumiałość jestem początkującym w programowaniu

1

Żeby zobaczyć wersję Javy wpisz w konsoli polecenie java -version.
Przykładowe oglądanie apletu w przeglądarce:
Stwórz plik HTML z poniższą zawartością

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
   <title>Tester</title>
</head>
<body>
<p>
<applet width="..." height="..." code="...">
</applet>
<p>
<body>
</html>

Kropki zamień nazwą klasy apletu i wymiarami obszaru, który przeznaczasz na aplet.

<applet width="600" height="400" code="MyFirstApplet">

Otwórz ten plik w przeglądarce. W zależności od konfiguracji będzie to podwójne kliknięcie lub uruchomienie przeglądarki i wybranie z menu pozycji Otwórz plik w większości (we wszystkich?) przeglądarkach jest to Ctrl+O.

0

Przykład wczytywania grafiki za pomocą biblioteki awt:

public class DisplayImageExample extends Applet
{
        Image img1;
       
        public void init(){
               
                img1 = getImage(getDocumentBase(), getParameter("Scieżka do rysunku"));
        }
       
        public void paint(Graphics g){
                g.drawImage(img1, 100,100,this);
        }
       
}

co tu może być problem hmmm... ze złą scieżka do rysunku
weż stwórz w netbeans w projekcie nowy Package, nazwij images lub rysunki i tam umiesc rysunek po tym sciezka będzie tak wygladała:
/images/rysunek

0

mam wersje : java version 1.7.0_15
mam utworzony package z obrazkami tak jak sugerował Madaoo.
a kod wygląda tak:

package gierka;

import java.awt.Color;
import java.applet.Applet;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
/**
 *
 * @author Tomek
 */
public class Program extends Applet implements KeyListener{
   

int rozmiar1 = 14*40;
int rozmiar2 = 10*40;
   static Applet applet;
    Zadanie zadanie = new Zadanie();
    Timer timer1 = new Timer();
    Timer timer2 = new Timer();
   Image bufor;
   Graphics bg;
   static int stan = 0;
   
   Image wrog;
   Image grunt;
   Image brick;
   Image face;
   Image exit;
    

    /**
     *
     */
    @Override
    
   public void init() {
  applet = this;
  applet.addKeyListener(this);
applet.setSize(rozmiar1,rozmiar2);
applet.setBackground(Color.LIGHT_GRAY);
bufor = createImage(rozmiar1,rozmiar2);
bg = bufor.getGraphics();

 timer2.scheduleAtFixedRate(zadanie, 10, 100);  
 
 wrog = getImage(getDocumentBase(),"obrazki/wrog.jpg");
 brick = getImage(getDocumentBase(),"/brick.jpg");
 exit = getImage(getCodeBase(),"/obrazki/exit.gif");
 face = getImage(getDocumentBase(),"obrazki/face.gif");

zadanie.zrobPlansze();
   }
    /**
     *
     * @param g
     */
    @Override
    public void update(Graphics g)
    {
        
        bg.clearRect(0, 0, rozmiar1, rozmiar2);
        paint(bg);
        g.drawImage(bufor, 0, 0, applet);
    }
    /**
     *
     * @param g
     */
    @Override
 public void paint(Graphics g){
        switch (stan){
      
            case 0:
            Font font = new Font("New Times Roman",Font.BOLD,30);
        g.setColor(Color.RED);
        g.drawString("Jeżeli chcesz zagrac wcisnji ' T '",50 , 100);
          g.setFont(font);
        
                break;
        case 1:
        rysujPlansze(g);
        break;
        
        case 2:
            koniec1(g);
            //Font font = new Font("New Time Roman",Font.BOLD,24);
            g.setColor(Color.yellow);
            //g.setFont(font);
            
            break;
        
        case 3:
            
            koniec2(g);
        //case 't':
           // stan=1;
            //break;
             break;
        }
        }
      
        

    public void koniec1(Graphics g){
        g.drawString("KONIEC1", 25, 100);
    }
      public void koniec2(Graphics g){
          
        g.drawString("HA HA HA Przegrałes ", 20, 100);
        g.drawString("jak chcesz jeszcze raz to wciśnji ' R '", 20, 200);
    }
   public void rysujPlansze(Graphics g){
       for(int i=0;i<zadanie.plansza.length;i++){
           for(int j=0;j<zadanie.plansza[0].length;j++){
          
               if(zadanie.plansza[i][j]==4){
                  //   g.drawImage(face, 40*j, 40*i, this);
                   g.setColor(Color.CYAN);
                       g.fillOval(40*j, 40*i, 40, 40);
               }
            /*if(zadanie.wrog[i][j]==3){
                   g.setColor(Color.GREEN);
                       g.fillRect(40*j, 40*i, 40, 40);
               }*/
               if(zadanie.wyjscie[i][j]==2){
                    exit = getImage(getDocumentBase(),"obrazki/exit.gif");
                     g.drawImage(exit, 40*j, 40*i, this);
                 //  g.setColor(Color.YELLOW);
                      // g.fillRect(40*j, 40*i, 40, 40);
               }
                   
               switch(zadanie.plansza[i][j]){
                   //case 0:
                     //  g.drawImage(wrog, 40*j, 40*i, this);
                      // break;
               
                   case 1:
                       g.drawImage(brick, 40*j, 40*i, this);
                     //  g.setColor(Color.RED);
                       //g.fillRect(40*j, 40*i, 40, 40);
                       break;
                       
                  /* case 3:
                       g.setColor(Color.GREEN);
                       g.fillRect(40*j, 40*i, 40, 40);
                       break;*/
                  
                    case 3:
                         // g.drawImage(wrog, 40*j, 40*i, this);
                       g.setColor(Color.GREEN);
                       g.fillOval(40*j, 40*i, 40, 40);
                       break;
                   
                           
                 /*  case 4:
                       g.setColor(Color.CYAN);
                       g.fillOval(40*j, 40*i, 40, 40);
                      
                       break;*/
               }
           }
       }
   }
   
   
    @Override
    public void keyTyped(KeyEvent arg0) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    /**
     *
     * @param arg0
     */
    @Override
    public void keyPressed(KeyEvent arg0) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  switch(arg0.getKeyChar()){
      
       case 't':
               stan=1;
                        break;
  case 'r':
      System.out.println("fdgfd");
               stan=0;
                          break;}
  
    switch(arg0.getKeyCode()){
       
       case 37:
           zadanie.ruszaj('l');
           break;
       case 38:
           zadanie.ruszaj('g');
           break;
       case 39:
           zadanie.ruszaj('p');
           break;
       case 40:
           zadanie.ruszaj('d');
           break;
           
   }
    }

    @Override
    public void keyReleased(KeyEvent arg0) {
      // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}

może w ten sposób się uda znaleźć przyczynę problemu, sorry może mało czytelny ten kod

0
 wrog = getImage(getDocumentBase(),"obrazki/wrog.jpg");
 brick = getImage(getDocumentBase(),"/brick.jpg");
 exit = getImage(getCodeBase(),"/obrazki/exit.gif");
 face = getImage(getDocumentBase(),"obrazki/face.gif");

/// gdzies tam hen daleko :P

exit = getImage(getDocumentBase(),"/obrazki/exit.gif");

poprwaic ścieżki ;) na :

 wrog = getImage(getDocumentBase(),"/obrazki/wrog.jpg"); //< lub images nie wiem jak nazwales tą paczke z rysunkami
 brick = getImage(getDocumentBase(),"/obrazki/brick.jpg");
 exit = getImage(getCodeBase(),"/obrazki/exit.gif");
 face = getImage(getDocumentBase(),"/obrazki/face.gif");

/// gdzies tam hen daleko :P

exit = getImage(getDocumentBase(),"/obrazki/exit.gif");
0

gierka.obrazki wziąłem folder obrazki i przeciągnąłem na package gierka i sam utworzył drugi o tej nazwie gierka.obrazki

0

ok działa powinno być tak face = getImage(getCodeBase(),"gierka/obrazki/face.gif");
dzięki wielkie za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1