Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [JAVA] image niet te zien (https://forum.scholieren.com/showthread.php?t=1240623)

remcobers 03-08-2005 21:47

[JAVA] image niet te zien
 
Ik heb onderstaande code. Alles staat in dezelfde map. Lokaal doet hij het wel, Op internet. Heb het plaatje chmod 777 gedaan. Maar daarna deed hij het niet.

iemand de oplossing???

Code:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class bewegen extends Applet implements KeyListener
     
{
    int x = 50;
    int y = 50; 
    Image image;
 
 
    public void init()
    {
        addKeyListener(this);
        requestFocus();
               
        image = getImage(getDocumentBase(), "test.jpg");
    }
    public void paint(Graphics g)
    {             
        g.drawImage(image, x, y, this);     
    }
    public void keyTyped(KeyEvent e){}
   
  public void keyPressed(KeyEvent e){
  int key = e.getKeyCode();
    if (key == KeyEvent.VK_LEFT)
    {
      x = x - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_RIGHT)
    {
      x = x + 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_UP)
    {
      y = y - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_DOWN)
    {
      y = y + 10;
      repaint();
    }
 
  }
  public void keyReleased(KeyEvent e){ }
}


micra 04-08-2005 02:13

Misschien licht het aan een versie verschil tussen thuis en host? :confused:

eddie 04-08-2005 07:35

getDocumentBase() geeft een verkeerd pad terug?

Anders moet je gewoon even debuggen...

remcobers 04-08-2005 10:23

Gedaan, en dat verschil kan niet. Is nog steeds de zelfde speler.

Maar zoals ik al zei, thuis doet hij het wel.

fosje 04-08-2005 10:36

je moet ff getDocumentBase() + "test.jpg" uit laten spugen en dan kijken of dat wel klopt met het path van je plaatje.
bij lycos wil het bijvoorbeeld nog wel eens zo zijn dat ie de extensie veranderd naar .JPG (hoofdletters dus).

edit: ik neem aan dat ie het plaatje niet weergeeft? want er staat niet bij wat het precies niet doet zover ik kan zien

remcobers 04-08-2005 11:27

Hij geeft geen errors. HEt plaatje is gewoon niet te zien. Zal eens kijken op het path dan wel goed is

edit: Ok, kan er niet achter komen wat hij als getDocumentbase(); geeft. Krijg hem niet geprint kort gezegd

fosje 04-08-2005 15:11

hmm probeer trouwens eens "test.jpg" te vervangen door "\test.jpg" misschien dat dat werkt en ik zal zo ff kijken hoe je die documentbase makkelijk kan weergeven

Nigo 04-08-2005 15:50

Allereerst lijkt het me ZEER onverstandig om je plaatje te chmodden naar 777, je geeft hiermee alle gebruikersrechten weg over het plaatje. Dat is vragen om hax0r moeilijkheden... alleen gebruiken als je echt iets wegschrijft naar het plaatje, en dat doe je volgens mij niet... enkel gebruik je hem om te lezen.

Uit conventiebeschouwingen lijkt het me overigens ook niet aan te raden om je classe "bewegen" met lowercase te laten beginnen. Camelcasen die hap om het consistent te houden; Bewegen.

Citaat:

remcobers schreef op 04-08-2005 @ 12:27 :
Hij geeft geen errors. HEt plaatje is gewoon niet te zien. Zal eens kijken op het path dan wel goed is

edit: Ok, kan er niet achter komen wat hij als getDocumentbase(); geeft. Krijg hem niet geprint kort gezegd

Als je de API erbij haalt, zie je dat getDocumentBase een object terugspuugt van het type URL. Classe URL heeft een implementatie op de methode toString, die de string representatie teruggeeft bij aanroep. Ofwel, je moet even image.toString(); printen :)

Let ook op of case sensitivity niet een rol speelt. Ofwel, of test.jpg ook daadwerkelijk test.jpg is ipv TeSt.jpg oid. Windows ziet ze als gelijkwaardig, maar *nix niet.

remcobers 04-08-2005 16:50

Als ik die toSting() print krijg ik: sun.awt.image.ToolkitImage@1a679b7


Nu snap ik er niks meer van:S

Nigo 04-08-2005 16:56

Citaat:

remcobers schreef op 04-08-2005 @ 17:50 :
Als ik die toSting() print krijg ik: sun.awt.image.ToolkitImage@1a679b7


Nu snap ik er niks meer van:S

Dat is een hash. Moment, ik start even eclipse op ;)

EDIT:

toString werkt hier anders perfect...
Code:

package vragen;

import java.net.*;

/**
 * @author Ninh
 *
 * TODO Placeholder
 */
public class URLTest {

        public static void main(String[] args) {

                String urlString = "http://www.tweakers.net/";
               
                try
                {
                        URL url = new URL(urlString);
                        System.out.println("De URL is: " + url.toString());
                }
                catch(Exception e)
                {
                        System.out.println(e.getMessage());
                }

               
        }
}

Dit geeft:

Code:

De URL is: http://www.tweakers.net
Kun je even posten wat je gedaan hebt? Het lijkt er namelijk op dat jij niet a) getypechecked/cast hebt, b) je toString op een imageobject hebt aangeroepen.

remcobers 04-08-2005 17:37

Code:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;


public class bewegen extends Applet implements KeyListener
     
{
    int x = 50;
    int y = 50; 
    Label tekst;
    Image image2;
   
 
    public void init()
    {
        addKeyListener(this);
        requestFocus();

        image2 = getImage(getDocumentBase(), "/test.jpg");
      tekst = new Label(image2.toString(), Label.LEFT);
        add(tekst);
         
       
       
    }
    public void paint(Graphics g)
    {         
        g.drawImage(image2, x, y, this);
       
    }
    public void keyTyped(KeyEvent e){}
   
  public void keyPressed(KeyEvent e){
  int key = e.getKeyCode();
     
    if (key == KeyEvent.VK_LEFT)
    {
      x = x - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_RIGHT)
    {
      x = x + 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_UP)
    {
      y = y - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_DOWN)
    {
      y = y + 10;
      repaint();
    }
 
  }
  public void keyReleased(KeyEvent e){ }
}

Ben maar een newbie kwa java hoor

Nigo 04-08-2005 17:57

Citaat:

remcobers schreef op 04-08-2005 @ 18:37 :
Code:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;


public class bewegen extends Applet implements KeyListener
     
{
    int x = 50;
    int y = 50; 
    Label tekst;
    Image image2;
   
 
    public void init()
    {
        addKeyListener(this);
        requestFocus();

        image2 = getImage(getDocumentBase(), "/test.jpg");
      tekst = new Label(image2.toString(), Label.LEFT);
        add(tekst);
         
       
       
    }
    public void paint(Graphics g)
    {         
        g.drawImage(image2, x, y, this);
       
    }
    public void keyTyped(KeyEvent e){}
   
  public void keyPressed(KeyEvent e){
  int key = e.getKeyCode();
     
    if (key == KeyEvent.VK_LEFT)
    {
      x = x - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_RIGHT)
    {
      x = x + 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_UP)
    {
      y = y - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_DOWN)
    {
      y = y + 10;
      repaint();
    }
 
  }
  public void keyReleased(KeyEvent e){ }
}

Ben maar een newbie kwa java hoor

Hehe, dat dacht ik al. Je hebt toString() geinvoked op een imageobject, dan krijg je een hash ja (classe Object, waar elke classe van erft heeft een implementatie op toString(), die de hash adres van het object terugeeft).
De overschreven methode toString() van classe URL geeft de string representatie van de URL. De methode getDocumentBase() returned een URL object. Verdiep je eerst in object orientatie voordat je met java begint... de hele taal staat er namelijk op.

Voor nu:

Code:

tekst = new Label(image2.toString(), Label.LEFT);
Vervangen met

Code:


tekst = new Label(getDocumentBase().toString(), Label.LEFT);


remcobers 04-08-2005 18:05

Citaat:

Verdiep je eerst in object orientatie voordat je met java begint... de hele taal staat er namelijk op.
Met php lukt het wel redelijk met classes werken enz.


MAAR ik heb het geprobeert en hij geeft het html document neer.
Dus daarom doet hij het niet. HEb jij nog een andere oplossing? Of eerst verder leren totdat ik bij URL aankom voor applets?

edit: met getCodeBase() geeft hij eindelijk de juiste url. Alleen het plaatje wordt nog steeeds niet geopend. En het is allemaal kleine letters.

Nigo 04-08-2005 20:53

Haal de slash weg, dus gewoon "test.jpg" ipv "/test.jpg" (de slash zorgt ervoor dat je 1 niveau hoger gaat... dat is niet de bedoeling. Als dat niet werkt, haal dan eens de extentie weg (dus "test" ipv "test.jpg").
En ja, OOP leren voordat je met zulke dingen begint is _ECHT_ aan te raden.

remcobers 04-08-2005 21:05

Die / had ik al geweg gehaalt. En zonder die .jpg doet hij het ook niet. (duhhh). Het ligt dus niet aan de Java code.

Zal het wel vragen aan mensen die newbies wel serius nemen.

Nigo 04-08-2005 21:09

Citaat:

remcobers schreef op 04-08-2005 @ 22:05 :
Die / had ik al geweg gehaalt. En zonder die .jpg doet hij het ook niet. (duhhh). Het ligt dus niet aan de Java code.

Zal het wel vragen aan mensen die newbies wel serius nemen.

De extensie weghalen was een probeersel aangezien de API enkel iets zegt over de naam van het bestand. Dus de "duh" is nergens voor nodig.

Wat betreft je code, daar kan het wel / niet aan liggen. Hoe dan ook heb ik na deze reply niet echt zin meer om je te helpen... een arrogante n00b is iets dat ik niet kan hebben.

Wel wil ik je nog meegeven dat:

Code:

  int key = e.getKeyCode();
    if (key == KeyEvent.VK_LEFT)
    {
      x = x - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_RIGHT)
    {
      x = x + 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_UP)
    {
      y = y - 10;
      repaint();
    }
 
    if (key == KeyEvent.VK_DOWN)
    {
      y = y + 10;
      repaint();
    }

behoorlijk loos is, hier zijn switch-cases voor bedacht.

remcobers 04-08-2005 21:43

Citaat:

Ninh schreef op 04-08-2005 @ 22:09 :
De extensie weghalen was een probeersel aangezien de API enkel iets zegt over de naam van het bestand. Dus de "duh" is nergens voor nodig.

Wat betreft je code, daar kan het wel / niet aan liggen. Hoe dan ook heb ik na deze reply niet echt zin meer om je te helpen... een arrogante n00b is iets dat ik niet kan hebben.

................................................

behoorlijk loos is, hier zijn switch-cases voor bedacht.

N00b is geen newbie. Het is maar dat je het weet. Maar mod topic mag dicht ;)

Nigo 04-08-2005 21:54

Citaat:

remcobers schreef op 04-08-2005 @ 22:43 :
N00b is geen newbie. Het is maar dat je het weet. Maar mod topic mag dicht ;)
Wie zegt dat het mijn intentie was om newb te zeggen?

Enlightenment 04-08-2005 22:55

Heren, houden jullie het.. 'productief'? :)

@remcobers, het is niet altijd even wijs om mensen die je proberen te helpen voor het hoofd te stoten met opmerkingen als "Zal het wel vragen aan mensen die newbies wel serius nemen.". Ik denk dat Ninh je van waardevol commentaar heeft voorzien. Of je het er mee eens bent is een tweede natuurlijk, maar reageer dan wel op een redelijke manier.


Alle tijden zijn GMT +1. Het is nu 00:05.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.