# Fehler im Aplplet! Nur wo?



## MASTERmind (27. Okt 2005)

Folgender Code funzt nicht, es gibt eine Security exception und noch einen A....voller anderer Exceptions.

das applet wird aber im browser angezeigt.

Kann mir bitte jemand helfen???


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

import java.applet.*;


public class MenuFuehrung extends JFrame implements ActionListener
{
 JMenuBar menuBar;

 public MenuFuehrung()
 {
  super("test");
  
  menuBar = new JMenuBar();
  menuBar.add(new JMenu("Datei")).
  add(new JMenuItem("Beenden"));
  setJMenuBar(menuBar);

  setSize(200,200);
  setVisible(true);
  setDefaultCloseOperation(EXIT_ON_CLOSE);

  setLocation((Toolkit.getDefaultToolkit().getScreenSize().width-
         getSize().width) / 2,
        (Toolkit.getDefaultToolkit().getScreenSize().height-
         getSize().height) / 2);
 }

      public void actionPerformed( ActionEvent e )
      {
             Object obj = e.getSource();
             String cmd = e.getActionCommand();
             if (obj instanceof JMenuItem)
             {
              System.out.println("Menu: " + cmd);

               if (cmd.equals("new"))
               {
                 /* create file */
               }
             }
      }

 public static void main(String args[])
 {
  MenuFuehrung nav = new MenuFuehrung();


 }



}
```


----------



## L-ectron-X (27. Okt 2005)

Applet? Ich sehe nur eine Applikation.
Applets erben von Applet/JApplet nicht von Frame/JFrame.
Hast du die richtige Klasse gepostet?
Wenn du das Ding dem Browser übergibst, ist's klar, dass er Späne macht.


----------



## Sky (27. Okt 2005)

Und an welcher Stelle fliegt die "SecurityException"


----------



## MASTERmind (27. Okt 2005)

Edit: Vergesst es habs gemerkt.

Ich poste heute nicht mehr.....mach mich sonst weiter lächerlich



@ L-ectron-x:




Jo, da hasse recht.

n00b alarm.

habe das folgender maßen geändert:

jetzt kann er aber das jmenubar nicht mehr drauf packen.


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

import java.applet.*;


public class MenuFuehrung extends Applet implements ActionListener
{
 JMenuBar menuBar;

 public MenuFuehrung()
 {

  menuBar = new JMenuBar();
  menuBar.add(new JMenu("Datei")).
  add(new JMenuItem("Beenden"));
  setJMenuBar(menuBar);

  setSize(200,200);
  setVisible(true);
  //setDefaultCloseOperation(EXIT_ON_CLOSE);

  setLocation((Toolkit.getDefaultToolkit().getScreenSize().width-
         getSize().width) / 2,
        (Toolkit.getDefaultToolkit().getScreenSize().height-
         getSize().height) / 2);
 }

      public void actionPerformed( ActionEvent e )
      {
             Object obj = e.getSource();
             String cmd = e.getActionCommand();
             if (obj instanceof JMenuItem)
             {
              System.out.println("Menu: " + cmd);

               if (cmd.equals("new"))
               {
                 /* create file */
               }
             }
      }

 public static void main(String args[])
 {
  MenuFuehrung nav = new MenuFuehrung();


 }



}
```
 :roll:


----------



## L-ectron-X (27. Okt 2005)

Ein Applet/JApplet kennt auch keine main()-Methode, die wird ignoriert.
Kommentiere mal die main()-Methode aus, bzw. lösche sie.
Den Konstruktor der Klasse benennst du um in

```
public void init() {
```
setSize(), setLocation() und setVisible() kannst du rausnehmen, die haben in einem Applet keine Funktion. Das wird von Browser bzw. durch den Code in der HTML-Seite geregelt.
Und letztendlich müsste das Applet von JApplet erben, da man einem Panel (davon erbt ja Applet) kein Menü hinzufügen kann.


----------



## MASTERmind (27. Okt 2005)

@l-extron:

Danke für die Tipps.

Funktioniert soweit. Nur die Events werden aber noch  nicht ausgeführt.

Muss man das Applet nach Komponenten hinzufügen oder so neu zeichnen lassen und kann man zb vom Applet aus nicht in die Konsole schreiben lassen per 

```
System.out.println("was auch immer.....");
```

So sieht das im Moment aus:


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


import java.applet.*;


public class MenuFuehrung extends JApplet implements ActionListener
{
 JMenuBar menuBar;
 JButton test;

 public void init()
 {

  menuBar = new JMenuBar();
  test = new JButton("japp");
  
  menuBar.add(new JMenu("Datei")).
  add(new JMenuItem("Beenden"));
  setJMenuBar(menuBar);
  add(test);
  test.setVisible(false);


  setSize(400,200);
  setVisible(true);

  setLocation((Toolkit.getDefaultToolkit().getScreenSize().width-
         getSize().width) / 2,
        (Toolkit.getDefaultToolkit().getScreenSize().height-
         getSize().height) / 2);
 }

      public void actionPerformed( ActionEvent e )
      {
             Object obj = e.getSource();
             String cmd = e.getActionCommand();
             if (obj instanceof JMenuItem)
             {
              System.out.println("Menu: " + cmd);

               if (cmd.equals("Beenden"))
               {
                System.out.println("Was auch immer");
               }
             }
      }
}
```
[/code]


----------



## L-ectron-X (27. Okt 2005)

So, mal ein ganz einfaches Beispiel zu JApplet mit Menü.

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

public class ColorApplet extends JApplet
{
   private JMenuBar menuBar;
   private JMenu colorMenu;
   private JMenuItem colorChoose, exit;
   private JColorChooser chooser;

   public void init() {
      menuBar = new JMenuBar();
      colorMenu = new JMenu("Farben");
      colorChoose = new JMenuItem("Hintergrund");
      colorChoose.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            openJColorChooser();
         }
      });
      
      exit = new JMenuItem("Beenden");
      exit.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            exit();
         }
      });
      colorMenu.add(colorChoose);
      colorMenu.add(exit);
      menuBar.add(colorMenu);

      setJMenuBar(menuBar);
      
      chooser = new JColorChooser();
   }

   private void openJColorChooser() {
      Color c = chooser.showDialog(this, "Farbwähler", null);
      getContentPane().setBackground(c);
   }
   
   private void exit() {
      System.out.println("Schreiben auf der Console:\nApplets können nicht beendet werden!\nAber man kann eine andere Webseite laden lassen.");
   }
}
```

Die HTML-Seite:

```
<html>
<head>
<title>ColorApplet-Applet</title>
</head>
<body>
<applet code="ColorApplet.class" width="600" height="400">
</applet>
</body>
</html>
```


----------

