Avatar billede webcreator Nybegynder
29. januar 2006 - 13:05 Der er 26 kommentarer og
1 løsning

Applet i NetBeans

Hej Eksperter.

Jeg kan simpelthen ikke få Applets til at fungere i NetBeans. Jeg kan arbejde med dem og afvikle det enkelte applet ved at højreklikke på det og vælge "Run" - men ikke som en egentlig applikation. Og når jeg vælger Build Project, så kan de kompilerede .class filer ikke afvikles i min browser. Jeg får fejlene:

Applet Test notinited
Loading Java Applet Failed...

Jeg loader min .class fil, som ligger i mappen classes, med flg. kode :

<APPLET codebase="classes" code="Test.class" width=350 height=200></APPLET>

Ovenstående er i øvrigt genereret af NetBeans.

Hvis jeg prøver at køre projektet med debugging (F5), så får jeg at vide at der ingen main classes er til rådighed : <No main classes found>.

Har jeg i øvrigt misforstået princippet med applets? Kan man ikke have flere "forms" som i øvrigt kan vises med noget lignende flg. kode:

new AppletForm().setVisible(true);
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 14:14 #1
Jeg mener ikke du kan det du gør på sidste linje. Når du nedarver fra Applet eller JApplet finder JRE igennem IE, Firefox etc. ud af - igennem dit applet-tag i html'en - at du har en applet der skal vises. Og JRE opretter så en instans af den definerede klasse, og viser de grafiske elementer du har tilføjet eller tegnet på din applet.

Jeg er også lidt i tvivl om hvad du har til hensigt med den sidste linje? Ønsker du at der bliver vist et "windows-vindue" uden for din applet, eller hvad skal den gøre?
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 14:16 #2
Hvis du bruger IE, så prøv efter din applet-side er loaded (og fejlet) at gå op i Funktioner >> Sun Java Console - Der kan du får vist en eventuel exception der bliver smidt.
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 14:20 #3
Du kan egentlig også få konsollen frem ved at højreklikke på Java ikonet nede i tray og vælge "Open Console"
Avatar billede _carsten Nybegynder
29. januar 2006 - 14:39 #4
new AppletForm().setVisible(true); er applikations orienteret.

En applet startes gennem sin init() metode

Dette er et eksempel på en simpel applet som kan vises i en browser (den gør i øvrigt ingenting)

public class Test extends javax.swing.JApplet {

    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void initComponents() {

    }
}
Avatar billede webcreator Nybegynder
29. januar 2006 - 15:39 #5
Hej. Tak for jeres svar.

Ok, jeg tænkte nok at eksemplet med formen kun var applikations-orienteret. Jeg kigge lige lidt på dit eksempel, carsten.

Mikkel > Jeg bruger Firefox.
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 15:50 #6
Du kan stadig få vist eventuelle exceptions ved at benytte sidstnævnte mulighed, hvor du højreklikker på ikonet nede i system-tray ved siden af uret.
Avatar billede webcreator Nybegynder
29. januar 2006 - 15:56 #7
Nej, jeg bruger ikke Windows men Linux :)

Det ser ud til at jeg får flg. to fejl :

exception: java.lang.NullPointerException.

Loading Java Applet Failed... (vises når jeg holder musen over applet'en - resulterer i at Firefox låser).
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 16:09 #8
Ahh - ok :)

Jeg kender desværre ikke til hvor konsollen gemmer sig i Linux, men det må kunne lade sig gøre at få den frem, så du kan se hvad der er skyld i den nullpointer.
Avatar billede webcreator Nybegynder
29. januar 2006 - 16:14 #9
Underligt. Carstens eksempel virker fint..
Avatar billede webcreator Nybegynder
29. januar 2006 - 16:14 #10
Elendigt IDE hvis NetBeans ikke engang kan lave en korrekt template til en Applet.
Avatar billede webcreator Nybegynder
29. januar 2006 - 16:16 #11
Fejlen ligger tilsyneladende heri :

    private void initComponents() {
       
        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 400, Short.MAX_VALUE)
                );
        layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 300, Short.MAX_VALUE)
                );
    }
Avatar billede _carsten Nybegynder
29. januar 2006 - 16:17 #12
Det kan den sagtens, mit eksempel er generet via NetBeans.

Prøv at lave et nyt Project, og lav en simpel applet.
Avatar billede _carsten Nybegynder
29. januar 2006 - 16:18 #13
Okay - Sæt et andet layout, eks. BorderLayout
Avatar billede _carsten Nybegynder
29. januar 2006 - 16:18 #14
Det layout er 'FreeDesign'
Avatar billede webcreator Nybegynder
29. januar 2006 - 16:51 #15
Det virkede sørme. Så forstår jeg bedre hvorfor jeg kunne få det til at virke i NetBeans tidligere - der stod den vist på BorderLayout som standard. Hvorfor understøttes FreeDesign ikke?
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 16:58 #16
Det gør det også hvis du kan sætte classpath til at pege på det. Det er nemlig en trejdeparts komponent og ikke standard i Java.
Avatar billede webcreator Nybegynder
29. januar 2006 - 17:13 #17
Hm, hvor gør man det og hvordan? Bliver denne komponent ikke inkluderet i projektet automatisk?
Avatar billede mikkelbm Nybegynder
29. januar 2006 - 17:33 #18
Jeg kender ikke det layout, og jeg kender ikke til NetBeans, så det ved jeg ikke.

Måske Carsten ved det?
Avatar billede webcreator Nybegynder
29. januar 2006 - 18:17 #19
Håber jeg :)
Avatar billede webcreator Nybegynder
29. januar 2006 - 21:05 #20
Carsten?
Avatar billede _carsten Nybegynder
29. januar 2006 - 21:27 #21
Sorry - var lige nødt til at køre i byen, giv mig lige en halv time.
Avatar billede _carsten Nybegynder
29. januar 2006 - 21:51 #22
Check at din manifest fil ser sådan ud, du finder den i roden af projektet
Main-Class: skal du erstatte med dit packagenavn og klasse

Manifest-Version: 1.0
Main-Class: exp.Exp   
X-COMMENT: Main-Class will be added automatically by build



Tryk Shift + F11 og lav et test dir, eks:  C:\test

Kopier din Min.jar fil til c:\test, du finder den i projectMappe\dist\

Find filen: swing-layout-0.7.jar 
            Den ligger i netbeansInstallationDir\ide6\modules\ext\
            kopier den til c:\test
           
Kopier din html fil til c:\test

Ret din HTML fil nedenstående

<P>
<APPLET codebase="." code="exp/Exp.class" width=350 height=200
    archive="Min.jar, swing-layout-0.7.jar">
</APPLET>
</P>


Erstat:    code="exp/Exp.class" med navnet på din package og klassenavn

            archive="Min.jar  RET TIL MED NAVN


Prøv det
Avatar billede _carsten Nybegynder
29. januar 2006 - 22:06 #23
Det er et kanon godt layout, men jeg bruger det aldrig, da jeg altid skal huske at kopiere swing-layout-0.7.jar med og pakke det sammen med min egen jar fil.

Godt nok bruger jeg teknikken med: archive="Min.jar, Min2.jar, Min3.jar">
men jeg gider ikke at folk skal downloade yderligere 100 kb, når jeg snildt kan undgå det ved at bruge et andet layout.
Avatar billede _carsten Nybegynder
29. januar 2006 - 22:34 #24
Har du fået det til at virke ??

Mht. forms, så laver man normalt kun én JFrame form eller én JApplet form, her efter bruger man JDialog eller JInternalFrame

En JFrame/JApplet er udgangspunktet for en applikation som kører på eks. en windows platform eller JApplet hvis det køres via en browser.
Avatar billede webcreator Nybegynder
30. januar 2006 - 22:37 #25
Hej Carsten.

Jeg tjekker det snarest :)
Avatar billede webcreator Nybegynder
05. marts 2006 - 13:40 #26
Carsten > Tak for hjælpen - smider du et svar?
Avatar billede _carsten Nybegynder
05. marts 2006 - 16:32 #27
Kommer her.
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