Avatar billede jannek_ek Nybegynder
04. januar 2005 - 17:04 Der er 17 kommentarer og
1 løsning

problemer med applet

jeg startede med at lave et grafisk vindue (frame), men har nu ændret det til en applet. men det der før virkede i et frame virker ikke i en applet...

import java.applet.*;
import java.lang.*;
import java.awt.*;
import java.util.*;

public class rpg extends Applet
{
  public int buffA = 1;
  public int buffB = 1;
  String name;
  public void paint(Graphics g)
  {
    MusseLytter lyt = new MusseLytter();
    lyt.wIndow = this;
    this.addMouseListener(lyt);
    switch (buffB)
    {
      case 1:
        name = "forest";
        break;
      case 2:
        name = "castle";
        break;
    }
    Image bgImage = Toolkit.getDefaultToolkit().getImage("gfx\\"+name+"-"+buffA+".jpg");
    g.drawImage(bgImage, 0, 0, this);
    g.setColor(new Color(255, 255, 255, 150));
    g.fillRect(20, 19, 260, 162);
    g.fillRect(21, 185, 60, 12);
    g.fillRect(87, 185, 60, 12);
    g.fillRect(153, 185, 60, 12);
    g.fillRect(219, 185, 60, 12);
    g.setColor(new Color(0, 0, 0));
    g.setFont(new Font("Lucida Console", Font.PLAIN, 12));
    g.drawString("Prev", 23, 195);
    g.drawString("Next", 89, 195);
    g.drawString("Prev", 155, 195);
    g.drawString("Next", 221, 195);
    g.setColor(Color.white);
    g.drawString(name, 298 - 7 * name.length(), 198);
  }
}
Avatar billede arne_v Ekspert
04. januar 2005 - 17:09 #1
Jeg tror at det er getImage som driller.

Du kan verificere det i Java Console i din browser.

Du skal formentlig bruge den getImage som har en URL som argument.
Avatar billede jannek_ek Nybegynder
04. januar 2005 - 17:36 #2
kan du komme med et lille eksempel, jeg kan ikke selv få det til at virke...
Avatar billede _carsten Nybegynder
04. januar 2005 - 19:47 #3
Enig med Arne, har du prøvet følgende som burde fungere

String path = getCodeBase().toString() + "gfx\\"+name+"-"+buffA+".jpg";
Image bgImage = Toolkit.getDefaultToolkit().getImage( path );
Avatar billede arne_v Ekspert
04. januar 2005 - 20:03 #4
Jeg ville have sagt:

Image bgImage = Toolkit.getDefaultToolkit().getImage(new URL(getCodeBase() + "gfx\\" + name + "-" + buffA + ".jpg"));
Avatar billede jannek_ek Nybegynder
04. januar 2005 - 20:45 #5
nu har jeg prøvet med en url, den kan fint kompileres, men den virker stadig ikke... men måske er det bare browseren der ikke henter den igen efter de rettelser jeg har lavet. Men jeg har ikke tid til at ordne det nu.

import java.applet.*;
import java.lang.*;
import java.awt.*;
import java.util.*;

public class rpg extends Applet
{
  public int buffA = 1;
  public int buffB = 1;
  String name;
  public void paint(Graphics g)
  {
    MusseLytter lyt = new MusseLytter();
    lyt.wIndow = this;
    this.addMouseListener(lyt);
    switch (buffB)
    {
      case 1:
        name = "forest";
        break;
      case 2:
        name = "castle";
        break;
    }
    Image bgImage = Toolkit.getDefaultToolkit().getImage(new String(getCodeBase()+"gfx\\"+name+" "+buffA+".jpg"));
    g.drawImage(bgImage, 0, 0, this);
    g.setColor(new Color(255, 255, 255, 150));
    g.fillRect(20, 19, 260, 162);
    g.fillRect(21, 185, 60, 12);
    g.fillRect(87, 185, 60, 12);
    g.fillRect(153, 185, 60, 12);
    g.fillRect(219, 185, 60, 12);
    g.setColor(new Color(0, 0, 0));
    g.setFont(new Font("Lucida Console", Font.PLAIN, 12));
    g.drawString("Prev", 23, 195);
    g.drawString("Next", 89, 195);
    g.drawString("Prev", 155, 195);
    g.drawString("Next", 221, 195);
    g.setColor(Color.white);
    g.drawString(name, 298 - 7 * name.length(), 198);
  }
}
Avatar billede arne_v Ekspert
04. januar 2005 - 21:27 #6
Prøv lige:

Image bgImage = Toolkit.getDefaultToolkit().getImage(new URL(getCodeBase()+"gfx\\"+name+" "+buffA+".jpg"));
Avatar billede _carsten Nybegynder
05. januar 2005 - 17:21 #7
Arne - vi er selvfølgelig enige

Jeg forventede bare at vi snakkede fil på disk eller i jar, da jannek_ek brugte stien
("gfx\\"+name+"-"+buffA+".jpg") og ikke en URL
Avatar billede _carsten Nybegynder
05. januar 2005 - 17:30 #8
Hvilket iøvrigt minder mig om at fejlen selvfølgelig ligger her

Skråstreg / i stedet for dobbelt backslash \\

Svaret til jannek_ek må altså være at en af nedenstående virker

Image bgImage = Toolkit.getDefaultToolkit().getImage(new URL(getCodeBase() + "gfx/" + name + "-" + buffA + ".jpg"));

eller

String path = getCodeBase().toString() + "gfx/"+name+"-"+buffA+".jpg";
Image bgImage = Toolkit.getDefaultToolkit().getImage( path );
Avatar billede arne_v Ekspert
05. januar 2005 - 21:58 #9
Jep det skal naturligvis være / ikke \\.

Jeg er ret sikker på at den skal downloades, da en applet normalt ikke
har adgan til en disk fil.

Og så skal den jo bruge URL.
Avatar billede _carsten Nybegynder
05. januar 2005 - 22:03 #10
Jeg bryder mig egentlig ikke om hele tiden at være enige med andre mennesker, føler det lidt som rygklapperi, - men det er jeg jo igen. :-)
Avatar billede arne_v Ekspert
22. januar 2005 - 22:48 #11
jannek ?
Avatar billede jannek_ek Nybegynder
24. januar 2005 - 17:25 #12
ja undskyld jeg ikke har svaret, men jeg er på efterskole (uden min computer), så jeg har ikke så meget mulighed får at prorammere.
men jeg skal nok svare så snart jeg kommer hjem.
Avatar billede jannek_ek Nybegynder
22. februar 2005 - 00:35 #13
ja så er jeg tilbage... og jeg ar testet jeres forslag, men uden held. Når jeg vil kompilere java filen, siger den:

rpg.java:26: unreported exception java.net.MalformedURLException; must be caught
or declared to be thrown
    Image bgImage = Toolkit.getDefaultToolkit().getImage(new URL(getCodeBase()+"
gfx/"+name+" "+buffA+".jpg"));
                                                        ^
1 error

og jeg har husket import java.net.*;
Avatar billede arne_v Ekspert
22. februar 2005 - 08:46 #14
Du skal have en:

try {
...
} catch(MalformedURLException e) {
}

omkring den kode
Avatar billede jannek_ek Nybegynder
22. februar 2005 - 14:26 #15
ja nu virker det til dels... det hele vises korekt, men der kommer ikke noget billede... og jeg har tjekket at stien den er korekt...

jeg går ud fra at getCodeBase() henviser til class filen (class og java filerne ligger det samme sted)
Avatar billede jannek_ek Nybegynder
22. februar 2005 - 14:29 #16
hey nu virker det... jeg ved ikke hvorfor, men da jeg åbnede browseren virkede det fint... kom med et svar arne v
Avatar billede arne_v Ekspert
22. februar 2005 - 14:31 #17
ok
Avatar billede jannek_ek Nybegynder
22. februar 2005 - 14:32 #18
så sir jeg mange tak for hjælpen... og undskyld forsinkelsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester