Avatar billede lakana Nybegynder
02. maj 2006 - 18:53 Der er 43 kommentarer og
1 løsning

måske simpel fejl i repaint metoden!!

hejsa..
når jeg kommer ind på appleten viser den bare hvid skærm
indtil jeg klikker på appletten ved event kald..

fejlen opstår ved g.drawImage(offScreen,0,0,this);

jeg har prøvet at sætte g.drawImage(offScreen,0,0,this);  i void paint metoden.. men så blinker den rigtig tosset..

hvad gør jeg?? her er min kode

  public void paint(Graphics g)
      {
          bufferGfx.setColor(Color.WHITE);
     
          bufferGfx.clearRect(0,0,this.getWidth(),this.getHeight());
         
        bufferGfx.drawImage(baggrund,0,0,this);
         
        if (mouseDown != null)
              {
              bufferGfx.drawImage(figur, mouseDown.x-20, mouseDown.y-15, this);     
              bufferGfx.drawString(brugernavn,mouseDown.x-20,mouseDown.y+65);
              g.drawImage(offScreen,0,0,this);
            }
           
      }
Avatar billede nielle Nybegynder
02. maj 2006 - 18:56 #1
Man bør altid kalde super-klassens paint metode først.
Avatar billede lakana Nybegynder
02. maj 2006 - 19:21 #2
hvad mener du
Avatar billede lakana Nybegynder
02. maj 2006 - 19:32 #3
super-klassens paint metode???
Avatar billede nielle Nybegynder
02. maj 2006 - 19:44 #4
Dit program arver fra klassen Applet - dette er din superklasse, og du kalder dennes paint()-metode således:

public void paint(Graphics g)
{
    super.paint(g);

    bufferGfx.setColor(Color.WHITE);
     
    bufferGfx.clearRect(0,0,this.getWidth(),this.getHeight());
         
    bufferGfx.drawImage(baggrund,0,0,this);
         
    if (mouseDown != null)
    {
        bufferGfx.drawImage(figur, mouseDown.x-20, mouseDown.y-15, this);     
        bufferGfx.drawString(brugernavn,mouseDown.x-20,mouseDown.y+65);
        g.drawImage(offScreen,0,0,this);
    }
}
Avatar billede lakana Nybegynder
02. maj 2006 - 19:50 #5
giver samme resultat.. nu blinker den dog bare rigtigt meget og de gjorde den ikke før


hele koden:



package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;

import tower.skrivemetode;
import tower.socketsend.*;

public class brugere extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn;
socketsend ss = new socketsend();

  public brugere()
    {
        ss.send("LOGIN,Guest,0,0,bolle.gif");
    }

    public void init()
    {
        brugernavn = "Gæst 839";
        addMouseListener(this);

        figur = getImage(getCodeBase(),"bolle.gif");
        baggrund = getImage(getCodeBase(),"plade.gif"); 
        offScreen = createImage (this.getWidth(), this.getHeight());
        bufferGfx = offScreen.getGraphics();
     

    }



    public void paint(Graphics g)
{

    bufferGfx.setColor(Color.WHITE);
   
    bufferGfx.clearRect(0,0,this.getWidth(),this.getHeight());
       
    bufferGfx.drawImage(baggrund,0,0,this);
       
    if (mouseDown != null)
    {
        bufferGfx.drawImage(figur, mouseDown.x-20, mouseDown.y-15, this);   
        bufferGfx.drawString(brugernavn,mouseDown.x-20,mouseDown.y+65);
        g.drawImage(offScreen,0,0,this);
    }
}
   
      public void mouseClicked(MouseEvent e)
      {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
      }
     
      public void mousePressed(MouseEvent e)    {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
    }
 
     
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}
Avatar billede lakana Nybegynder
02. maj 2006 - 20:08 #6
hva gør jeg dog??
Avatar billede nielle Nybegynder
02. maj 2006 - 20:16 #7
Hmmm, nu gør jeg det ikke så meget i apletter, men jeg mener at man plejer at placere koden til grafik-buffern i en update()-metode i stedet for i paint().
Avatar billede lakana Nybegynder
02. maj 2006 - 20:23 #8
har jeg prøvet..
stadig hvid, indtil jeg prøver..

      public void update(Graphics g)
      {
          super.paint(g);
          paint(g);
    }
Avatar billede nielle Nybegynder
02. maj 2006 - 20:28 #9
Jeg troede at det var blinkeriet som var problemet?

Den skal være hvid ifølge din kode.
Avatar billede lakana Nybegynder
02. maj 2006 - 20:40 #10
hvorfor? sætter jo en baggrund???
det først når jeg klikker med musen på appletten, baggrunden kommer frem
Avatar billede nielle Nybegynder
02. maj 2006 - 20:45 #11
Du skriver bare ikke baggrunden...

bufferGfx.drawImage(baggrund, 0, 0, this);

- rettes til:

g.drawImage(baggrund, 0, 0, this);
Avatar billede lakana Nybegynder
02. maj 2006 - 20:49 #12
ja.. men gør jeg det, blinker den jo hele tiden..
Avatar billede nielle Nybegynder
02. maj 2006 - 20:57 #13
Prøv om dette ikke virker bedre:

package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;

// import tower.skrivemetode;
// import tower.socketsend.*;

public class brugere extends Applet implements MouseListener {
    Image offScreen;

    Socket sock = null;
    Image figur;
    Image baggrund;
    Point mouseDown = null;
    String brugernavn;
    // socketsend ss = new socketsend();

    public brugere() {
        // ss.send("LOGIN,Guest,0,0,bolle.gif");
    }

    public void init() {
        brugernavn = "Gæst 839";
        addMouseListener(this);

        figur = getImage(getCodeBase(), "bolle.gif");
        baggrund = getImage(getCodeBase(), "plade.gif");
    }

    public void update(Graphics g) {
        if (offScreen == null) {
            offScreen = createImage(this.getWidth(), this.getHeight());
        }
       
        Graphics bufferGfx = offScreen.getGraphics();
        bufferGfx.setColor(Color.WHITE);
        bufferGfx.clearRect(0, 0, this.getWidth(), this.getHeight());
        bufferGfx.drawImage(baggrund, 0, 0, this);
       
        if (mouseDown != null) {
            bufferGfx.drawImage(figur, mouseDown.x - 20, mouseDown.y - 15, this);
            bufferGfx.drawString(brugernavn, mouseDown.x - 20, mouseDown.y + 65);
        }

        paint(bufferGfx);
        g.drawImage(offScreen, 0, 0, this);
        bufferGfx.dispose();
    }

    public void paint(Graphics g) {
    }

    public void mouseClicked(MouseEvent e) {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
    }

    public void mousePressed(MouseEvent e) {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
    }

    public void mouseReleased(MouseEvent e) {}

    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}
}
Avatar billede lakana Nybegynder
02. maj 2006 - 20:58 #14
nielle - hvorfor fjerner du socket senderen??
den SKAL jo sende :-)
Avatar billede lakana Nybegynder
02. maj 2006 - 21:00 #15
men dit eksempel starter ikke med at vise baggrunden ..!
Avatar billede nielle Nybegynder
02. maj 2006 - 21:01 #16
02/05-2006 20:58:33> Fordi at jeg ellers selv får fejl - jeg har jo ikke nogen socket åben her hos mig. Du skal bare fjerne udkommenteringerne igen.

02/05-2006 21:00:31> Har du prøvet at køre koden?
Avatar billede lakana Nybegynder
02. maj 2006 - 21:03 #17
nå nej:)

ja jeg har prøvet den..
Avatar billede lakana Nybegynder
02. maj 2006 - 21:06 #18
men den vises forkert i ff .. og virker fint i ie.

altså i ie er det ligesom før

og i ff kommer der intet frem ikke engang når man klikker
Avatar billede nielle Nybegynder
02. maj 2006 - 21:35 #19
Prøv dette her:

package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;

// import tower.skrivemetode;
// import tower.socketsend.*;

public class brugere extends Applet implements MouseListener {
    Image offScreen;

    Socket sock = null;
    Image figur;
    Image baggrund;
    Point mouseDown = null;
    String brugernavn;
    // socketsend ss = new socketsend();

    public brugere() {
        // ss.send("LOGIN,Guest,0,0,bolle.gif");
    }

    public void init() {
        brugernavn = "Gæst 839";
        this.addMouseListener(this);

        figur = getImage(getCodeBase(), "bolle.gif");
        baggrund = getImage(getCodeBase(), "plade.gif");
    }
   
    public void start() {
        repaint();
    }

    public void update(Graphics g) {
        if (offScreen == null) {
            offScreen = createImage(this.getWidth(), this.getHeight());
        }
       
        Graphics bufferGfx = offScreen.getGraphics();
        bufferGfx.setColor(Color.WHITE);
        bufferGfx.clearRect(0, 0, this.getWidth(), this.getHeight());
        bufferGfx.drawImage(baggrund, 0, 0, this);
       
        if (mouseDown != null) {
            bufferGfx.drawImage(figur, mouseDown.x - 20, mouseDown.y - 15, this);
            bufferGfx.drawString(brugernavn, mouseDown.x - 20, mouseDown.y + 65);
        }

        paint(bufferGfx);
        g.drawImage(offScreen, 0, 0, this);
        bufferGfx.dispose();
    }

    public void paint(Graphics g) {
    }

    public void mouseClicked(MouseEvent e) {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
    }

    public void mousePressed(MouseEvent e) {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
    }

    public void mouseReleased(MouseEvent e) {}

    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}
}

Jeg har desværre ingen anelse om hvad der går galt i FireFox.
Avatar billede lakana Nybegynder
02. maj 2006 - 21:41 #20
præcist det samme.. den starter ikke med at vise baggrunden.. :(
Avatar billede nielle Nybegynder
02. maj 2006 - 21:47 #21
Så er jeg desværre ret blank på hvad der mangler ... som sagt gør jeg det ikke så meget i appletter. :^|
Avatar billede _carsten Nybegynder
02. maj 2006 - 21:54 #22
Nu har jeg godt nok kun skimmet spm og indlæg, men nedenstående burde løse problemet

Ret til nedenstående (copy/paste)

public void paint(Graphics g){
    if(offScreen == null){
        offScreen = createImage(this.getWidth(), this.getHeight());
       
        bufferGfx = offScreen.getGraphics();
        bufferGfx.setColor(Color.WHITE);
        bufferGfx.drawImage(baggrund,0,0,this);
    }
   
    g.drawImage(offScreen,0,0,this);
}

public void update(Graphics g){
    paint(g);
}

public void mouseClicked(MouseEvent e) {
    bufferGfx.drawImage(figur, e.getX() - 20, e.getY() -15, this);   
    bufferGfx.drawString(brugernavn, e.getX() -20, e.getY() +65);
}
Avatar billede _carsten Nybegynder
02. maj 2006 - 21:56 #23
Fjernes

    public void init()
    {
        brugernavn = "Gæst 839";
        addMouseListener(this);

        figur = getImage(getCodeBase(),"bolle.gif");
        baggrund = getImage(getCodeBase(),"plade.gif"); 
        offScreen = createImage (this.getWidth(), this.getHeight());  // FJERN
        bufferGfx = offScreen.getGraphics();                        // FJERN
     

    }
Avatar billede _carsten Nybegynder
02. maj 2006 - 21:56 #24
Jeg har taget udgangspunkt i lakana's kom 02/05-2006 19:50:03
Avatar billede lakana Nybegynder
02. maj 2006 - 22:05 #25
hej carsten.
nu er du gal på den..

1. den skal flytte billederne.. ikke oprette nye billedere hele tiden.
2. den viser ikke baggrunden.
Avatar billede _carsten Nybegynder
02. maj 2006 - 22:09 #26
Ja - tænkte det nok, tråde i spinaten kan man altid gøre, men så må jeg jo kigge igen og se om jeg kan gøre det bedre.
Avatar billede lakana Nybegynder
02. maj 2006 - 22:42 #27
lyder godt
Avatar billede lakana Nybegynder
03. maj 2006 - 14:52 #28
hmm :S
Avatar billede lakana Nybegynder
03. maj 2006 - 17:51 #29
skal jeg lave det forfra igen synes i?? så kan det jo være den ikke melder fejl osv..

det tror jeg lige jeg gør.. så svarer jeg lige tilbage
Avatar billede lakana Nybegynder
03. maj 2006 - 18:05 #30
såh.. men nu er det ligesom den er langsommere og baggrunden blinker lidt.. kan i hjælpe med at sætte buffered graphic på???


package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;

import tower.skrivemetode;
import tower.socketsend.*;

public class brugere extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn;
socketsend ss = new socketsend();
int x;
int y;

  public brugere()
    {
        ss.send("LOGIN,Guest,0,0,bolle.gif");
    }

    public void init()
    {
        /* Sætter start kordinater */
        x = 0;
        y = 0;
        /* Brugernavnet på brugeren */
        brugernavn = "Gæst 839";
       
        /* Tilføjer en mouselistener */
        addMouseListener(this);
       
        /* Tilføjer data, baggrunden og figuren */
        figur = getImage(getCodeBase(),"normal.gif");
        baggrund = getImage(getCodeBase(),"room.gif");
     
       

    }



public void paint(Graphics g)
{
  /* Tegner baggrunden */
  g.drawImage(baggrund,0,0,this);
  /* Tegner start-figur (din egen) */
  g.drawImage(figur,x,y,this);
  /* Sætter navnet på x- og y-aksen med +65 i y-aksen */
  g.drawString(brugernavn,x,y+65);
 
}
 
  public void mouseClicked(MouseEvent e)
  {
    /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
    x = e.getX() - 20; 
    y = e.getY() + 5;
    /* Genskaber appletten for nye data */
    repaint();
}
   
      public void mousePressed(MouseEvent e) 
      {
        /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
        x = e.getX() - 20; 
        y = e.getY() + 5;
          /* Genskaber appletten for nye data */
        repaint();
    }
   
public void update(Graphics g)
{
    paint(g);
}
   
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}
Avatar billede _carsten Nybegynder
03. maj 2006 - 22:26 #31
Så fik jeg tid til at kigge på det igen, havde problemer med at få vist baggrund ved start, men løste det med MediaTracker - prøv at se om du ikke kan bygge det ind

import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;


public class NewFrame extends java.awt.Frame implements MouseListener, MouseMotionListener{

    public NewFrame() {
        baggrund = Toolkit.getDefaultToolkit().getImage(STI_TIL_BAGGRUND);
        figur = Toolkit.getDefaultToolkit().getImage(STI_TIL_FIGUR);
        tr = new MediaTracker(this);
        tr.addImage(Toolkit.getDefaultToolkit().getImage(STI_TIL_BAGGRUND), 0);
        setSize(500,500);
        initComponents();
       
       
        addMouseListener(this);
        addMouseMotionListener(this);
    }

    private void initComponents() {

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {                         
        System.exit(0);
    }                       

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewFrame().setVisible(true);
            }
        });
    }
   
    public void paint(Graphics g){
        if(offScreen == null){
            try {
                tr.waitForID(0);
                offScreen = createImage(getWidth(), getHeight());
                bufferGfx = offScreen.getGraphics();
                bufferGfx.drawImage(baggrund,0,0, this);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
           
        }

        g.drawImage(offScreen,0,0,this);
    }
   
    public void update(Graphics g){
        paint(g);
    }
   
   
   
    public void mouseClicked(MouseEvent e) {
        x = e.getX() - 20;
        y = e.getY() - 15;
        if(!down)
            bufferGfx.drawImage(figur, x, y, this);
        down = true;
    }

    public void mouseDragged(MouseEvent e) {
        x = e.getX() - 20;
        y = e.getY() - 15;
        bufferGfx.drawImage(baggrund,0,0,this);
        bufferGfx.drawImage(figur, x, y, this);
        repaint();
    }

   
   
    public void mouseMoved(MouseEvent e) {
    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }

    Image figur;
    Image offScreen;
    Graphics bufferGfx;
    Image baggrund = null;
    int x,y;
    boolean down = false;
    MediaTracker tr;
    String STI_TIL_BAGGRUND = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    String STI_TIL_FIGUR  = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";
}
Avatar billede _carsten Nybegynder
03. maj 2006 - 22:33 #32
Håber ovenstående eksempel hjælper dig på vej.

De 2 andre spørgsmål du har kørende ser ud til at have relation til dette, så dem springer jeg over - kigger forbi i morgen hvis jeg får tid.
Avatar billede lakana Nybegynder
03. maj 2006 - 22:43 #33
hej igen.. den nye melder fejl og siger jeg ikke har acces til filerne room.gif osv..

kan du ikke brygge det ind i et mere simpelt script?? har nemlig denne kode og den blinker kun.. den skal bare rettes sådan baggrunden ikke blinker??


package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;

import tower.skrivemetode;
import tower.socketsend.*;

public class brugere extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn;
socketsend ss = new socketsend();
int x;
int y;

  public brugere()
    {
        ss.send("LOGIN,Guest,0,0,bolle.gif");
    }

    public void init()
    {
        /* Sætter start kordinater */
        x = 0;
        y = 0;
        /* Brugernavnet på brugeren */
        brugernavn = "Gæst 839";
       
        /* Tilføjer en mouselistener */
        addMouseListener(this);
       
        /* Tilføjer data, baggrunden og figuren */
        figur = getImage(getCodeBase(),"normal.gif");
        baggrund = getImage(getCodeBase(),"room.gif");
     
       

    }



public void paint(Graphics g)
{
  /* Tegner baggrunden */
  g.drawImage(baggrund,0,0,this);
  /* Tegner start-figur (din egen) */
  g.drawImage(figur,x,y,this);
  /* Sætter navnet på x- og y-aksen med +65 i y-aksen */
  g.drawString(brugernavn,x,y+65);
 
}
 
  public void mouseClicked(MouseEvent e)
  {
    /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
    x = e.getX() - 20; 
    y = e.getY() + 5;
    /* Genskaber appletten for nye data */
    repaint();
}
   
      public void mousePressed(MouseEvent e) 
      {
        /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
        x = e.getX() - 20; 
        y = e.getY() + 5;
          /* Genskaber appletten for nye data */
        repaint();
    }
   
public void update(Graphics g)
{
    paint(g);
}
   
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}
Avatar billede _carsten Nybegynder
04. maj 2006 - 21:42 #34
Hvis du ikke erstatter
    String STI_TIL_BAGGRUND = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    String STI_TIL_FIGUR  = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";
med stien til dine billeder - ja, så får du fejl, men ellers ikke.


Tilrette 03/05-2006 22:43:08

Er det ikke bare copy/paste af min constructor, paint og mouseDragged ?
Avatar billede lakana Nybegynder
05. maj 2006 - 10:11 #35
String STI_TIL_BAGGRUND = "xxx.gif";
    String STI_TIL_FIGUR  = "xxx.gif";

så melder den fejl....
Avatar billede _carsten Nybegynder
05. maj 2006 - 10:49 #36
Ja - for "xxx.gif" er jo kun en del af stien

Stien kunne være "C:\\mineBilleder\\xxx.gif"
Avatar billede lakana Nybegynder
05. maj 2006 - 17:13 #37
java.security.AccessControlException: access denied (java.io.FilePermission C:\Programmer\EasyPHP1-8\www\beta\room.gif read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
    at sun.awt.SunToolkit.getImage(Unknown Source)
    at tower.brugere.<init>(brugere.java:17)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-4" java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletException(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletStatus(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Avatar billede _carsten Nybegynder
05. maj 2006 - 19:00 #38
Kører du det som en applet ??

Mit eksempel er en applikation
Avatar billede nielle Nybegynder
05. maj 2006 - 19:01 #39
Husk at en applet køre i browseren, altså på brugerens maskine. Den har ikke adgang til filer som ligger på "C:\Programmer\EasyPHP1-8\www\beta\room.gif":

1) Fordi at apletter ikke må kunne arbejde med brugerens filer, og:
2) Fordi at der sandsynligvis slet ikke er sådan en fil som ligger der.
Avatar billede _carsten Nybegynder
05. maj 2006 - 19:03 #40
Hvis du tester din egen applet, skal stien selvfølgelig være getCodeBase(),"room.gif")

Hvis billedet ligger der!
Avatar billede lakana Nybegynder
05. maj 2006 - 19:39 #41
ehhh carsten..
hele mit spørgsmål står over alt med applets.. så kan du vel regne ud jeg kører som applet hehe..

kan du så ikke lige lave det sådan den ikke giver den fejl?
Avatar billede _carsten Nybegynder
05. maj 2006 - 20:48 #42
Jo - det er jeg fuldt ud klar over, nu tænkte jeg mere på det eksempel jeg lagde, som absolut ikke var en applet, det var meningen du skulle copy/paste til din applet.


Jeg tror din applet skal se sådan ud.

package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;
import java.awt.MediaTracker;

import tower.skrivemetode;
import tower.socketsend.*;

public class brugere extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn;
socketsend ss = new socketsend();
int x;
int y;
    boolean down = false;
    MediaTracker tr;

  public brugere()    {
        ss.send("LOGIN,Guest,0,0,bolle.gif");
  }

    public void init(){
        /* Sætter start kordinater */
        x = 0;
        y = 0;
        /* Brugernavnet på brugeren */
        brugernavn = "Gæst 839";
       
        /* Tilføjer en mouselistener */
        addMouseListener(this);
       
        /* Tilføjer data, baggrunden og figuren */
        figur = getImage(getCodeBase(),"normal.gif");
        baggrund = getImage(getCodeBase(),"room.gif");
        tr = new MediaTracker(this);
        tr.addImage(baggrund, 0);
    }



    public void paint(Graphics g){
      if(offScreen == null){
          try {
              tr.waitForID(0);
              offScreen = createImage(getWidth(), getHeight());
              bufferGfx = offScreen.getGraphics();
              bufferGfx.drawImage(baggrund,0,0, this);
          } catch (InterruptedException ex) {
              ex.printStackTrace();
          }

      }
     
      g.drawImage(offScreen,0,0,this);
      g.drawString(brugernavn,x,y+65);

    }
 
      public void mouseClicked(MouseEvent e)  {
        /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
        x = e.getX() - 20; 
        y = e.getY() + 5;
        if(!down)
          bufferGfx.drawImage(figur, x, y, this);
        down = true;

        repaint();
    }
   
    public void mousePressed(MouseEvent e) {
        /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
        x = e.getX() - 20; 
        y = e.getY() + 5;
          /* Genskaber appletten for nye data */
        bufferGfx.drawImage(baggrund,0,0,this);
        bufferGfx.drawImage(figur, x, y, this);
        repaint();
    }
   
    public void update(Graphics g){
        paint(g);
    }
   
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}
Avatar billede lakana Nybegynder
05. maj 2006 - 21:39 #43
mange tak.. smider du svar???

og kunne du http://www.eksperten.dk/spm/707134
Avatar billede _carsten Nybegynder
05. maj 2006 - 22:31 #44
Svar
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