Avatar billede martin_schou Nybegynder
08. februar 2002 - 09:37 Der er 11 kommentarer og
1 løsning

Applet-problemer

Ja, det er sikkert et brud på reglerne, men jeg skal have løst det her møgproblem hurtigst muligt, og jeg har ikke en konto på sharksforum :-/

Det drejer sig om følgende spørgsmål

http://www.eksperten.dk/spm/166846

hvor jeg er villig til at smide yderligere 200 point i nakken på hvem der end er i stand til få det til at køre.
Avatar billede disky Nybegynder
08. februar 2002 - 09:44 #1
Hej Martin

Du anveder metoder i dit program som er Deprecated !  Thread.stop(); !! FY

For at du skulle kunne bruge Swing i en browser, skal du bruge en JVM som er lavet af SUN, du kan ikke være sikker på dem i browserne virker.
Avatar billede martin_schou Nybegynder
08. februar 2002 - 09:49 #2
Disky - jeg har konverteret den fra swing til AWT, så den del er IKKE skyld i problemerne. Der er en "komplet" strippet udgave af appletten i mit sidste indlæg. Hvis du kan få den til at køre i en browser (du skal nok lige rette lidt på host- og billednavn), så får du point.

Eftersom det skal køre i en browser (altså java 1.1), så er Thread.stop() vel næppe deprecated?
Avatar billede disky Nybegynder
08. februar 2002 - 10:17 #3
jeg kan nok godt kigge på den lidt senere

mail den til disky@hotmail.com
Avatar billede disky Nybegynder
08. februar 2002 - 11:27 #4
Jeg har fået den til at virke fint nu i en browser.

Eller rettere sagt, nu kommer der et grafik billede frem.

Jeg havde 3 problemmer.

1. Dit layout er IKKE kendt af browserne
2. Du kan kun loade fra samme maskine som din applet er hentet fra pga. Security policy
3. Ved ikke hvad dit program egentligt skal :)
Avatar billede martin_schou Nybegynder
08. februar 2002 - 11:50 #5
1) Fedt - hvad skal jeg så bruge? Null-layout? Alting i den SKAL sættes med pixel-præcision.
2) Det ved jeg - jeg bruger en lokal apache-server til at hente ting, som ikke ligger lokalt.
3) I første omgang skal det blot placere en masse billeder og labels med pixel-præcision.
Avatar billede disky Nybegynder
08. februar 2002 - 12:04 #6
Du kan godt bruge det netbeans layout, men så skal du ligge source koden til det, sammen med din .class filer.
Avatar billede martin_schou Nybegynder
08. februar 2002 - 12:10 #7
Hvordan ser det, du har fået til at køre, ud? Altså kodemæssigt?
Avatar billede disky Nybegynder
08. februar 2002 - 12:14 #8
Har rettet lidt i dit url path halløj, for at få det til at passe med min maskine.

Men applet'en loader og viser det billede jeg beder den om.



import java.applet.Applet;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;

import java.io.InputStream;

import java.net.URL;

public class AWTApplet extends Applet implements Runnable
{
    Thread RunningThread;
    Image Buffer;
    Graphics GraphicsBuffer;
   
    String ImageHost = "http://192.168.1.39";
    String SSIHost = "http://192.168.1.39";
    String SSIDirectory = "/SSI/";
    String ImageDirectory = "/img/";
    Image Background;
   
    public void init()
    {
        setSize( 300,200 );
        Buffer = createImage(size().width,size().height);
        GraphicsBuffer = Buffer.getGraphics();
        initImages();
        drawImages();
        initComponents();
    }
    private void initComponents()
    {
        //    setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
    }
   
   
    public void start()
    {
        if (RunningThread == null)
        {
            RunningThread = new Thread(this);
            RunningThread.start();
        }
    }
   
    public void stop()
    {
        if (RunningThread != null)
        {
            RunningThread.stop();
            RunningThread = null;
        }
    }
   
    public void run()
    {
        while(true)
        {
            drawImages();
           
            repaint();
            System.out.println("repaint()");
            Sleep( 5000 );
        }
    }
   
    private void Sleep( int time )
    {
        try
        {
            RunningThread.sleep( time );
        }
        catch( InterruptedException e )
        {
            e = null;
        }
    }
   
    public void update(Graphics g)
    {
        paint(g);
    }
   
    public void paint(Graphics g)
    {
        g.drawImage(Buffer,0,0, this);
    }
   
    private String ReadStringValueFromURL( String url )
    {
        String Value = "";
        try
        {
            URL URL_Til_Aflæsning = new URL( "http://www.disky.dk/index.html");
            InputStream IO = URL_Til_Aflæsning.openStream();
            byte[] byteArray = new byte[IO.available()];
            IO.read( byteArray );
            for( int index = 0; index < byteArray.length; index++ )
            {
                Value += (char) byteArray[index];
            }
        }
        catch( java.security.AccessControlException E )
        {
            Value += "{Access Denied}";
            E = null;
        }
        catch( java.net.MalformedURLException E )
        {
            Value += "{Bad URL}";
            E = null;
        }
        catch( java.io.IOException E )
        {
            Value += "{IO Exception}";
            E = null;
        }
        catch( Exception E )
        {
            Value += "{Error}";
            E = null;
        }
        return Value;
    }
   
    private Image ReadImageFromURL( String url )
    {
        try
        {
            URL adresse = new java.net.URL( /*ImageHost + ImageDirectory + */url);
            Image icon = getImage( adresse );
            if( icon == null )
            {
                System.out.println( "No image. URL: [" + ImageHost + ImageDirectory + url + "]" );
            }
            return icon;
        }
        catch( Exception E )
        {
            E.printStackTrace();
            E = null;
        }
        return null;
    }
    private void drawImage( Image ImageToManipulate, int x_coords, int y_coords, int width, int height )
    {
        GraphicsBuffer.drawImage(ImageToManipulate, x_coords, y_coords,width, height, null);
    }
    private void drawImages()
    {
        if(Background!=null)
        {
            drawImage( Background, 0, 0, 1013, 609 );
        }
    }
    private void initImages()
    {
        Background      = ReadImageFromURL( "file:///e:\\Udvikling\\fishbanner.jpg" );
    }
}
Avatar billede disky Nybegynder
08. februar 2002 - 12:15 #9
det er forresten vigtigt i din ReadImageFromURL at du angiver protokol !

Altså file: http: ftp: eller lignende foran, ellers kan den ikke hente noget på den måde.
Avatar billede martin_schou Nybegynder
08. februar 2002 - 12:23 #10
Det er den jo også sat til vha ImageHost, som self skal have en protokol-angivelse foran.

Prøver lige, om jeg kan få det her til at virke
Avatar billede martin_schou Nybegynder
08. februar 2002 - 13:04 #11
Uhm, hvordan i alverden har du fået den til at virke? I AppletViewer? I en browser?

AppletViewer smider følgende i hovedet på mig:
java.security.AccessControlException: access denied (java.io.FilePermission \c:\web\root\img\ventilationsanlaeg.png read)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)
        at java.security.AccessController.checkPermission(AccessController.java:399)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
        at java.lang.SecurityManager.checkRead(SecurityManager.java:890)
        at sun.awt.image.URLImageSource.<init>(URLImageSource.java:40)
        at sun.applet.AppletImageRef.reconstitute(AppletImageRef.java:36)
        at sun.misc.Ref.get(Ref.java:49)
        at sun.applet.AppletViewer.getCachedImage(AppletViewer.java:341)
        at sun.applet.AppletViewer.getImage(AppletViewer.java:336)
        at java.applet.Applet.getImage(Applet.java:196)
        at AWTApplet.ReadImageFromURL(AWTApplet.java:139)
        at AWTApplet.initImages(AWTApplet.java:167)
        at AWTApplet.init(AWTApplet.java:28)repaint()
        at sun.applet.AppletPanel.run(AppletPanel.java:344)
        at java.lang.Thread.run(Thread.java:484)

Browserne kan ikke vise en skid (hverken IE 5.5 eller Opera 6.0) - det virker heller ikke på en tilfældig anden maskine, der ikke er blevet udsat for en java-installation.

???
Avatar billede martin_schou Nybegynder
12. februar 2002 - 13:58 #12
Jeg har løst problemet. Der skal compiles til java 1.1, og det gøres med kommandoen:

javac -target 1.1 filnavn.java
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