Avatar billede pblv Nybegynder
08. august 2003 - 13:08 Der er 15 kommentarer og
1 løsning

Problemer med billeder

Hejsa,

Jeg har en applet, som ikke viser de billeder den burde. Koden ser sådan ud:

import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.net.*;
import java.io.*;
import javax.swing.*;


public class FlytSpiller extends JApplet {

  public void init() {

      Container c = getContentPane();
      TegnBane bane = new TegnBane(c);
  }
}

class TegnBane extends JPanel {

  private int x, y;
  private TegnePanel tegnePanel;
  private ImageIcon mand;
  private ImageIcon bane;
  private JCheckBox checkw;
  private JCheckBox check;
  private URL url;

  public TegnBane(Container c) {

    BorderLayout Layout = new BorderLayout();
    JCheckBox check = new JCheckBox();
    JCheckBox checkw = new JCheckBox();
    check.setText("Flyt dig mand!");

    try{
        url = new URL("http://www.todi.dk/temp");
        }
    catch(MalformedURLException e)
        {
        e.printStackTrace();
        }


    mand = new ImageIcon(url,"mand.jpg");
    bane = new ImageIcon(url,"bane.gif");

    tegnePanel = new TegnePanel();
    c.add(checkw, Layout.NORTH);
    c.add(tegnePanel, Layout.CENTER);
    c.add(check, Layout.SOUTH);
    tegnePanel.addMouseMotionListener(new MouseMotionListener());
    tegnePanel.addMouseListener(new MouseListener());
    c.setSize(450,290);
  }

  private class MouseMotionListener extends MouseMotionAdapter{
    public void mouseDragged (MouseEvent e) {

    //  if (check.isSelected())
      {
          x = e.getX();
          y = e.getY();
          repaint();
      }
    }
  }

  private class MouseListener extends MouseAdapter
  {
    public void mousePressed (MouseEvent e)
    {

          mand = new ImageIcon(url,"mand2.jpg");
          repaint();
    }
    public void mouseReleased (MouseEvent e)
    {

          mand = new ImageIcon(url,"mand.jpg");
          repaint();
    }
  }

  private class TegnePanel extends JPanel {
    public void paintComponent(Graphics g) {
      super.paintComponent(g);
      bane.paintIcon(this, g, 0, 0);
      mand.paintIcon(this, g, x-20, y-40);
      repaint();
    }
  }

}

og den reagerer således: http://www.todi.dk/temp/bane.html

Nogen der ved hvad der er galt?

Mvh
PBLV
Avatar billede l_otto Nybegynder
08. august 2003 - 13:31 #1
hvor ligger dine mand.jpg
Avatar billede l_otto Nybegynder
08. august 2003 - 13:32 #2
ret:

url = new URL("http://www.todi.dk/temp");

til:

url = new URL("http://www.todi.dk/temp/");
Avatar billede pblv Nybegynder
08. august 2003 - 13:33 #3
Hey.
De ligger i http://www.todi.dk/temp/. Har prøvet med / bagefter også, men det virker heller ikke... der må være noget andet galt!
Avatar billede _carsten Nybegynder
08. august 2003 - 13:33 #4
Nu sidder jeg lige og bliver lidt i tvivl, men prøv lige at fjerne den
repaint() du har i class TegnePanel

Det er et hurtigt bud - måske useriøst !!!
Avatar billede pblv Nybegynder
08. august 2003 - 13:36 #5
Godt bud, men det hjælper ikke. :)
Det hele har virket før jeg lavede det om til en applet. Det er først derefter det fuckede. Som en almindelige applikation, der virkede det fint. Og hvis jeg fjernede repaint i TegnePanel, kunne jeg ikke flytte på billedet.
Avatar billede _carsten Nybegynder
08. august 2003 - 13:44 #6
Nu har jeg godt nok ikke tid før engang i aften, men
umiddelbart savner jeg at du overrider paint() i din applet
Avatar billede l_otto Nybegynder
08. august 2003 - 13:48 #7
jamen har du ikke nappet det et sted fra hvor det virker ?
Avatar billede pblv Nybegynder
08. august 2003 - 13:50 #8
Carsten: Tror du det hjælper da?

Otto: Nej, så ville det jo virke :) Det er selvlavet.
Avatar billede l_otto Nybegynder
08. august 2003 - 13:51 #9
he he så nap det er sted :-)
Avatar billede simonvalter Praktikant
08. august 2003 - 13:58 #10
mand = new ImageIcon(url,"mand.jpg");
    bane = new ImageIcon(url,"bane.gif");

skal være


mand = new ImageIcon(url+"mand.jpg");
  bane = new ImageIcon(url+"bane.gif");
Avatar billede elv Nybegynder
08. august 2003 - 13:59 #11
Fra JDK 1.4:
public ImageIcon(URL location, String description)
Creates an ImageIcon from the specified URL. [blablabla]
Parameters:
location - the URL for the image
description - a brief textual description of the image

Du skal loade hvert billede med den fulde url:

URL urlMand = null, urlBane = null;
try
{
  urlMand = new URL("http://www.todi.dk/temp/mand.jpg");
  urlBane = new URL("http://www.todi.dk/temp/mand.jpg");
}
catch (MalformedURLException e)
{
  e.printStackTrace();
}
mand = new ImageIcon(urlMand);
bane = new ImageIcon(urlBane);

mand.getIconWidth() og mand.getIconHeight() gav -1 før, fordi billederne ikke blev loadet korrekt, det kan du bruge til at se om det lykkedes.

Det er med Applet.getImage at du skal bruge en base-url og et filnavn, ved imageicon foregår det ikke på den måde.
Avatar billede simonvalter Praktikant
08. august 2003 - 13:59 #12
næ glem hvad jeg sagde der ..

men det er url der er problemet
Avatar billede elv Nybegynder
08. august 2003 - 14:00 #13
ups, urlBane skal selvfølgelig være det andet billede :)
urlBane = new URL("http://www.todi.dk/temp/bane.gif");
Avatar billede simonvalter Praktikant
08. august 2003 - 14:00 #14
for laver du url om til
  url = new URL("http://www.todi.dk/temp/mand.jpg");
virker fint
Avatar billede pblv Nybegynder
08. august 2003 - 15:10 #15
Hey, så virkede det. Det her var hele humlen:

public ImageIcon(URL location, String description)
Creates an ImageIcon from the specified URL. [blablabla]
Parameters:
location - the URL for the image
description - a brief textual description of the image

Så Elv skal have point :)

Tak for indsatsen!
Avatar billede elv Nybegynder
08. august 2003 - 15:16 #16
Så vil jeg da lægge et diskret 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