Avatar billede mik28 Seniormester
13. oktober 2004 - 14:59 Der er 37 kommentarer og
1 løsning

applet problem

Hej Eksperter,

Jeg sidder og prøver at få en applet til at virke. Det er tanken at jeg vil lave et chatforum med specielt fokus på sikkerhed, men indtil videre skal jeg lige forstå hvordan det virker. Jeg har oprettet et websted http://web-oasen.dk:8080/chat hvor appletten skal vises. Jeg bruger Tomcat som server. Min class fil ligger i chat/classes/ men det vil altså ikke virke
Avatar billede mik28 Seniormester
13. oktober 2004 - 14:59 #1
Chat.class

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

public class Chat extends Applet {
   
    public void init() {
    }

    public void paint(Graphics g) {
        g.drawString("Welcome to Java!!", 50, 60 );
    }
}
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:01 #2
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

<html>

<head>
<title>Chat site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<center>
<applet
    code    = "Chat.class"
    width    = "500"
    height    = "300"
    >
</applet>
</center>
</body>
</html>
Avatar billede arne_v Ekspert
13. oktober 2004 - 15:04 #3
En applet køres client side og set fra serverens side er det bare en fil.

Den skal derfor ligge i samme directory som HTML filen.

Medmindre man naturligvis angiver sti i  applet tagget.
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:23 #4
Sådan her ikke

<applet
    code    = "./WEB-INF/classes/Chat.class"
    width    = "500"
    height    = "300"
    >
</applet>
Avatar billede arne_v Ekspert
13. oktober 2004 - 15:27 #5
Ja.

Bortset fra at din Tomcat næppe vil tillade download af filer fra WEB-INF træet !
Avatar billede arne_v Ekspert
13. oktober 2004 - 15:28 #6
Lig den i samme dir som HTMl filen - eller i et speciel dir for applets
ved siden af WEB-INF
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:28 #7
okay, hvor skal jeg så ligge dem
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:30 #8
Okay, så ser det ud til at virke
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:36 #9
Men jeg syntes ikke at kunne ligge appleten andre steder end sammen med HTML filen
Avatar billede arne_v Ekspert
13. oktober 2004 - 15:45 #10
Så er der en eller anden fjollet regel omkring applets og
URL'er med directory i.

Jeg kan godt prøve at lede efter noget.
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:46 #11
Det er pænt af dig :-)
Avatar billede mik28 Seniormester
13. oktober 2004 - 15:59 #12
Avatar billede mik28 Seniormester
13. oktober 2004 - 16:03 #13
Det her spørgsmål er i hvert tilfælde besvaret. Jeg vil rode lidt videre med det og håber jeg må vende tilbage
Avatar billede arne_v Ekspert
13. oktober 2004 - 16:08 #14
Avatar billede arne_v Ekspert
13. oktober 2004 - 16:09 #15
sektionen "Specifying the Applet Directory"
Avatar billede arne_v Ekspert
13. oktober 2004 - 16:09 #16
Groft sagt er det:

<APPLET CODE="klasse" CODEBASE="dir" ...
Avatar billede arne_v Ekspert
13. oktober 2004 - 16:10 #17
og et svar
Avatar billede mik28 Seniormester
13. oktober 2004 - 16:11 #18
Det vil jeg lige prøve
Avatar billede mik28 Seniormester
13. oktober 2004 - 16:12 #19
Hvordan får jeg det her implementeret i min applet

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Program extends JFrame implements ActionListener
{
   
    JButton    b1          = new JButton("Login");
    JLabel userl        = new JLabel("Username");
    JTextField user     = new JTextField();
    JLabel passl        = new JLabel("Password");
    JTextField pass     = new JTextField();
    JPanel pa;
   
    public Program()
    {
        super ("Sikker chat");
        setSize(500,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(400,300);
        setResizable(false);
       
        user.setColumns(10);
        pass.setColumns(10);
        b1.addActionListener(this);
   
        pa = new JPanel();
       
        pa.add(userl);
        pa.add(user);
        pa.add(passl);
        pa.add(pass);
        pa.add(b1);
       
        pa.setBackground(Color.red);
        setContentPane(pa);
       
    }
   
    public static void main(String args[])
    {
       
        JFrame fr = new Program();
        fr.setVisible(true);
    }

    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
       
        if (scr==b1)
        {
            JDialog fr = new Chat(this, "Chat", true);
            fr.setVisible(true);
        }
           
        repaint();
               
    }
}
Avatar billede arne_v Ekspert
13. oktober 2004 - 16:18 #20
Prøv:

public class Program extends JFrame implements ActionListener

->

public class Program extends JApplet implements ActionListener

og

public Program()

->

public void init()

og slet main.

[utestet !!!!]
Avatar billede mik28 Seniormester
13. oktober 2004 - 16:28 #21
Det er jeg bange for at jeg fatter HAT af
Avatar billede mik28 Seniormester
13. oktober 2004 - 16:35 #22
Det ville være super cool hvis du gad vise et eksempel. Jeg kan godt få det til at virke i en applikation, men jeg forstår ikke hvordan man får det til at virke i en applet.
Avatar billede arne_v Ekspert
13. oktober 2004 - 21:32 #23
Jeg har faktisk noget på lager.

Samme program som både applikation og applet !

http://www.vajhoej.dk/arne/eksperten/JFREECHART/MOVINGAVERAGEDEMO.JAVA

http://www.vajhoej.dk/arne/eksperten/JFREECHART/MOVINGAVERAGEAPPLET.JAVA

Appletten kan ses her:
  http://www.vajhoej.dk/arne/eksperten/JFREECHART/TEST.HTML

(husk at JApplet kræver SUN Java installeret på maskinen)
Avatar billede mik28 Seniormester
14. oktober 2004 - 21:19 #24
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;


public class Chat extends JFrame implements ActionListener
{
   
    JButton    b1      = new JButton("Login");
    JLabel userl        = new JLabel("Username");
    JTextField user    = new JTextField();
    JLabel passl        = new JLabel("Password");
    JTextField pass    = new JTextField();
    JPanel pa;   
   
    public Chat()
    {
        super ("Sikker chat");
        setSize(500,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(400,300);
        setResizable(false);
       
        user.setColumns(10);
        pass.setColumns(10);
        b1.addActionListener(this);
   
        pa = new JPanel();
       
        pa.add(userl);
        pa.add(user);
        pa.add(passl);
        pa.add(pass);
        pa.add(b1);
       
        pa.setBackground(Color.red);
        setContentPane(pa);
        }
       
       
        public void init() {
            JFrame fr = new Chat();
            fr.setVisible(true);
        }
   
        public void actionPerformed(ActionEvent evt)
        {
        Object scr = evt.getSource();
       
            if (scr==b1)
            {
        //    JDialog fr = new Opret(this, "Opret", true);
        //    fr.setVisible(true);
            }
        }
   
    }
Avatar billede mik28 Seniormester
14. oktober 2004 - 21:20 #25
Er det helt forkert, eller hvad mangler jeg
Avatar billede arne_v Ekspert
14. oktober 2004 - 21:32 #26
Du skal extende JApplet ikke JFrame.

Og init skal nok laves om til at afspejle det.
Avatar billede mik28 Seniormester
14. oktober 2004 - 21:43 #27
Det er i bund og grund det her jeg gerne vil have til at virke i en applet

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Program extends JFrame implements ActionListener
{
   
    JButton b1 = new JButton("Opret");
    JButton b2 = new JButton("Rediger");
    JButton b3 = new JButton("Udskriv");
    JButton b4 = new JButton("Exit");
    JPanel pa;
   
    public Program()
    {
        super ("Hovedmenu");
        setSize(350,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(400,300);
        setResizable(false);
       
        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
       
        pa = new JPanel();
        pa.add(b1);
        pa.add(b2);
        pa.add(b3);
        pa.add(b4);
        pa.setBackground(Color.red);
        setContentPane(pa);
       
    }
   
    public static void main(String args[])
    {
       
        JFrame fr = new Program();
        fr.setVisible(true);
    }

    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
       
        if (scr==b1)
        {
            JDialog fr = new Opret(this, "Opret", true);
            fr.setVisible(true);
        }
           
       
        if (scr==b2)
        {
            JDialog fr = new Slet(this, "Rediger", true);
            fr.setVisible(true);
        }   
       
        if (scr==b3)
        {
            JFrame fr = new Udskriv();
            fr.setVisible(true);
        }
       
        if (scr==b4)
        {
            System.exit(0);
        }
       
        repaint();
               
    }
}
Avatar billede mik28 Seniormester
14. oktober 2004 - 21:45 #28
er det rigtigt forstået at init metoden, modsvarer main metoden i applikationen?
Avatar billede arne_v Ekspert
14. oktober 2004 - 21:58 #29
eller constructor
Avatar billede arne_v Ekspert
14. oktober 2004 - 21:58 #30
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Program extends JApplet implements ActionListener
{
 
    JButton b1 = new JButton("Opret");
    JButton b2 = new JButton("Rediger");
    JButton b3 = new JButton("Udskriv");
    JButton b4 = new JButton("Exit");
    JPanel pa;
 
    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
     
        pa = new JPanel();
        pa.add(b1);
        pa.add(b2);
        pa.add(b3);
        pa.add(b4);
        pa.setBackground(Color.red);
        setContentPane(pa);
    }

    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
            // noget
        }
         
     
        if (scr==b2)
        {
            // noget
        } 
     
        if (scr==b3)
        {
            // noget
        }
     
        if (scr==b4)
        {
            System.exit(0);
        }
     
        repaint();
             
    }
}
Avatar billede mik28 Seniormester
14. oktober 2004 - 22:24 #31
Det virker jo egenligt fint nok :-) Jeg har bare et problem til. Hvordan får jeg noget til at ske når jeg trykker på en knap.
Avatar billede mik28 Seniormester
14. oktober 2004 - 22:25 #32
Jeg har prøvet med

if (scr==b1)
{
JDialog fr = new Opret(this, "Opret", true);
fr.setVisible(true);
}
Avatar billede mik28 Seniormester
14. oktober 2004 - 22:25 #33
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Opret extends JDialog implements ActionListener
{
    JButton b1 = new JButton("Knap1");
    JPanel pa;
   
    public Opret(Frame owner, String s, boolean modal)
    {
        super (owner, s, modal);
        setSize(300,100);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLocation(420,320);
        setResizable(false);
       
        b1.addActionListener(this);
       
        pa = new JPanel();
        pa.add(b1);
        pa.setBackground(Color.yellow);
        setContentPane(pa);
       
    }
   
        public void actionPerformed(ActionEvent evt)
        {
        Object scr = evt.getSource();
       
        if (scr==b1)
        {
                       
        }
       
    }
}
Avatar billede mik28 Seniormester
14. oktober 2004 - 22:35 #34
Avatar billede mik28 Seniormester
14. oktober 2004 - 22:38 #35
Avatar billede mik28 Seniormester
15. oktober 2004 - 11:21 #36
Jeg har problemer med at finde ud af at navigere. Den eneste måde jeg kan få det til at virke på er

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Chat extends JApplet implements ActionListener
{
 
    JLabel bl         = new JLabel("Brugernavn");
    JTextField bt    = new JTextField(10);
    JLabel pl         = new JLabel("Password");
    JTextField pt    = new JTextField(10);
   
    JButton b1 = new JButton("Login");
    JButton b2 = new JButton("Tilbage");
   
    JPanel pa;
 
    public void init()
    {
        setSize(350,100);
        setLocation(400,300);
     
        b1.addActionListener(this);
       
        pa = new JPanel();
       
        pa.add(bl);
        pa.add(bt);
        pa.add(pl);
        pa.add(pt);
        pa.add(b1);
        pa.setBackground(Color.red);
        setContentPane(pa);
    }
   
    public void test()
    {
        setSize(350,100);
        setLocation(400,300);
     
        b1.addActionListener(this);
       
        pa = new JPanel();
       
        pa.add(b2);
        pa.setBackground(Color.green);
        setContentPane(pa);
    }

    public void actionPerformed(ActionEvent evt)
    {
        Object scr = evt.getSource();
     
        if (scr==b1)
        {
        test();
        }
       
        if (scr==b2)
        {
        init();
        }
        repaint();
             
    }
}

Men det er jo noget rod da metoden test() jo gerne skulle over i sin egen klasse
Avatar billede arne_v Ekspert
17. oktober 2004 - 20:01 #37
Hvis du skal bruge flere klasser i en applet, så skal du pakke alle
class filerne ned i en jar fil og referere til den i dit APPLET tag !
Avatar billede mik28 Seniormester
17. oktober 2004 - 20:41 #38
Det var en god ting at vide :-)
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