Avatar billede skurggman Nybegynder
01. maj 2009 - 16:06 Der er 18 kommentarer og
1 løsning

Applet - hjælp?

Hej,

Jeg prøver at lave en applet, tidligere er det lykkedes, men efter jeg har indført nogle tråde i appleten, så har jeg tydeligvist et problem. Ved ikke om det kan skyldtes trådene :(

Nåh, men jeg laver appleten med en Manifest fil som ser sådan her ud:

Main-Class: theApplet

Til at lave appleten gør jeg bare følgende:
jar -cvf manifest.txt test.jar *.class

Fejlen ser sådan her ud i min java console:
java.lang.ClassCastException: theApplet cannot be cast to java.applet.Applet
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassCastException: theApplet cannot be cast to java.applet.Applet

Jeg har også prøvet at signere appleten, uden held - det har også tidligere virket uden signering.

Trådene er i øvrigt lavet efter hjælp fra Arne_V: http://www.eksperten.dk/spm/869272

På forhånda tak.
Avatar billede arne_v Ekspert
01. maj 2009 - 16:21 #1
Jeg tror at du er kommet til at fjerne "extends JApplet" paa klassen.

Den er noedvendige for en applet.
Avatar billede arne_v Ekspert
01. maj 2009 - 16:23 #2
Som jeg skrev i det spoergsmaal skal koden omskrives fra app til applet.

En saadan omskrivning inkluderer normalt:
* extende JApplet fremfor JFrame
* flyttet indholdet af constructor til init
Avatar billede skurggman Nybegynder
01. maj 2009 - 17:08 #3
Arh selvfølgelig.. :) Tak for hjælpen! Smid et svar...
Avatar billede arne_v Ekspert
01. maj 2009 - 17:12 #4
svar
Avatar billede skurggman Nybegynder
01. maj 2009 - 17:43 #5
Hmm, der var jeg måske lige tidligt nok på den - :) Jeg er nok bare træt idag, men selvom jeg flytter alt min kode fra constructoren til init() loader den ikke noget af det... Jeg extender JApplet nu...
Avatar billede arne_v Ekspert
01. maj 2009 - 17:58 #6
Kan du vise lidt af klassen?
Avatar billede skurggman Nybegynder
01. maj 2009 - 18:03 #7
Selvfølgelig...


public class theApplet extends JApplet implements ActionListener, KeyListener, FocusListener {

...
...
...

public void init(){
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            initLayout();
        }
    });
}

public void initLayout(){
    setLayout(new BorderLayout());
    setSize(800,600);
    setBackground(Color.white);
    stimulu = new JLabel("Loading Applet Data...",JLabel.CENTER);   
    stimulu.grabFocus();
    stimulu.setHorizontalTextPosition(JLabel.CENTER);
    left = new JLabel("Left");
    left.setPreferredSize(new Dimension(600,50));
    right = new JLabel("Right", JLabel.RIGHT);
    right.setPreferredSize(new Dimension(600,50));

    top = new JPanel(new BorderLayout());
    top.setBackground(Color.WHITE);
    top.add(left, BorderLayout.WEST);
    top.add(right, BorderLayout.EAST);
    add(top, BorderLayout.NORTH);
    add(stimulu, BorderLayout.CENTER);
    int id = (int) (Math.random()*10000000);
    logger = new logger(id);
    loadArrays();
}

Sikkert en simpel fejl - kan bare ikke spotte den.
Avatar billede arne_v Ekspert
01. maj 2009 - 18:14 #8
proev:

public class theApplet extends JApplet implements ActionListener, KeyListener, FocusListener {

...
...
...

public void init(){
    setLayout(new BorderLayout());
    setSize(800,600);
    setBackground(Color.white);
    stimulu = new JLabel("Loading Applet Data...",JLabel.CENTER); 
    stimulu.grabFocus();
    stimulu.setHorizontalTextPosition(JLabel.CENTER);
    left = new JLabel("Left");
    left.setPreferredSize(new Dimension(600,50));
    right = new JLabel("Right", JLabel.RIGHT);
    right.setPreferredSize(new Dimension(600,50));

    top = new JPanel(new BorderLayout());
    top.setBackground(Color.WHITE);
    top.add(left, BorderLayout.WEST);
    top.add(right, BorderLayout.EAST);
    add(top, BorderLayout.NORTH);
    add(stimulu, BorderLayout.CENTER);
    int id = (int) (Math.random()*10000000);
    logger = new logger(id);
    loadArrays();
}
Avatar billede skurggman Nybegynder
01. maj 2009 - 18:19 #9
Det virker heller ikke... :(
Avatar billede arne_v Ekspert
01. maj 2009 - 18:40 #10
Nogen fejl i Java Console?
Avatar billede skurggman Nybegynder
01. maj 2009 - 23:53 #11
Nej, den skriver bare følgende:

initializing...
starting...
stopping...
preparing for unloading...
Avatar billede arne_v Ekspert
02. maj 2009 - 01:13 #12
Og med en:

setVisible(true);

nederst i init() ?
Avatar billede skurggman Nybegynder
02. maj 2009 - 10:41 #13
Det gør ingen forskel... Mystisk - jeg sammenligner med en tidligere version af koden, hvor jeg ikke bruger tråde - og der virker det - og kan ikke se andre forskelle.
Avatar billede skurggman Nybegynder
02. maj 2009 - 11:42 #14
Hvis jeg laver constructoren igen - eksekverer den koden i constructoren, ved ikke om det er nogen hjælp.
Avatar billede arne_v Ekspert
02. maj 2009 - 17:37 #15
Kan du post hele koden her eller sende den til mig per email?
Avatar billede skurggman Nybegynder
03. maj 2009 - 18:21 #16
Det er nok bedst jeg sender den pr. mail hvis du har tid til at kigge det hurtigt igennem - du kan sende mig en mail på

kimrs @ asb . dk

så svarer jeg på den og du skal ikke have din e-mail ud at flyve her :)

På forhånd tak.
Avatar billede arne_v Ekspert
03. maj 2009 - 20:56 #17
Nu er mine email adresser ikke de helt store hemmeligheder.
Avatar billede skurggman Nybegynder
03. maj 2009 - 21:34 #18
Nej okay, kan godt se at du har din e-mail på din bruger side - det havde jeg ikke lige tænkt over.
Avatar billede skurggman Nybegynder
03. maj 2009 - 21:41 #19
Det var en eclipse / fejl 45 :) Man skal vælge at teste det som en applet - troede jeg selv den kunne finde ud af når man extender JApplet - men okay! :) Tak for hjælpen anyway.
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