richard: Application zu Applet--Wie nur?

Hallo Leute!
Ich hab mal wieder ein Problem.
Ich habe eine Java Application und will Sie nun zum Applet kompilieren.
Das ganze läuft in der Entwicklungsumgebung auch an,
doch dann wird nicht nur das Applet Fenster gestartet, sondern noch ein weiteres, in dem meine Anwendung abläuft.

Ich erhalte folgende Fehlermeldung:

java.lang.IllegalArgumentException: adding a window to a container
 at java.awt.Container.addImpl(Container.java:616)
 at java.awt.Container.add(Container.java:307)
 at TreeTableExample0.init(TreeTableExample0.java:84)
 at sun.applet.AppletPanel.run(AppletPanel.java:348)
 at java.lang.Thread.run(Thread.java:536)

Ich tu aber wirklich kein Fenster öffnen.

Was läuft da falsch?
Vielen Dank für Euer Interesse,
Richard

  1. Servus,

    das scheint mir ein Übergabeparameter Problem zu sein.
    Du übergibts wohl ein Windowsobject an einer Stelle, wo es nun nicht sein darf.

    Poste mal den Quellcode.

    Gruss Matze

    1. Modifizierte SourceKlasse (TreeTableExample0.java) :

      /*
       * %W% %E%
       *
       * Copyright 1997, 1998 Sun Microsystems, Inc. All Rights Reserved.
      */

      //import com.sun.java.swing.*;
      import javax.swing.*;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      import java.awt.Dimension;

      /**
       * A TreeTable example, showing a JTreeTable, operating on the
       * local file system.
       *
       * @version %I% %G%
       *
       * @author Philip Milne
       * edited Richard Holderied
       */

      public class TreeTableExample0
          extends java.applet.Applet {
        public void init() {
          JFrame frame = new JFrame("TreeTable");
          JTreeTable treeTable = new JTreeTable(new FileSystemModel());

      frame.getContentPane().add(new JScrollPane(treeTable));

      UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();
          int rightLook = 0;
          for (int count = 0; count < lafs.length; count++) {
            String myString = lafs[count].getName();
            if (myString == "Windows") {
              rightLook = count;
            }
          }

      UIManager.LookAndFeelInfo info = lafs[rightLook];
          try {
            UIManager.setLookAndFeel(info.getClassName());
            SwingUtilities.updateComponentTreeUI(frame);
          }
          catch (Exception e) {
            System.err.println("unable to set UI " +
                               e.getMessage());
          }

      this.setSize(new Dimension(600, 400));
          this.add(frame);
        }
      }

      Alle weiteren (unmodifiziert) verwendeten Klassen stehen bei:
      http://java.sun.com/products/jfc/tsc/articles/treetable1/index.html
      Namentlich:
       AbstractCellEditor.java
       AbstractTreeTableModel.java
       FileSystemModel.java
       JTreeTable.java
       MergeSort.java
       TreeTableModel.java
       TreeTableModelAdapter.java

      Ich danke für die Hilfe,
      Richard

      1. Hi,

        //import com.sun.java.swing.*;
        import javax.swing.*;
        import java.awt.event.WindowAdapter;
        import java.awt.event.WindowEvent;
        import java.awt.Dimension;

        Die Browser unterstützen kein Swing. Zum Rest sag ich mal nix.

        Ciao,
        Der Dubaischeich

        --
        <img src="http://www.neue-firma.com/dusch.gif" border="0" alt="">
        Der Dubaischeich
        http://sg.defined.de
        1. Hallo,

          //import com.sun.java.swing.*;
          import javax.swing.*;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;
          import java.awt.Dimension;

          Die Browser unterstützen kein Swing. Zum Rest sag ich mal nix.

          Welche Browser sollen denn Swing unterstützen? Das muss, meiner Meinung nach schon das Java Runtime Environment bzw. das Java Plugin erledigen. In _meinen_ Browsern _laufen_ Swing-Applets mit dem aktuellen JRE.

          viele Grüße

          Axel

          1. Hi,

            Die Browser unterstützen kein Swing. Zum Rest sag ich mal nix.
            Welche Browser sollen denn Swing unterstützen? Das muss, meiner Meinung nach schon das Java Runtime Environment bzw. das Java Plugin erledigen. In _meinen_ Browsern _laufen_ Swing-Applets mit dem aktuellen JRE.

            na dass mit dem browser war natürlich sehr flapsig ausgedrückt. die MS VM unterstützt aber imho kein swing.

            Ciao,
            Der Dubaischeich

            --
            <img src="http://www.neue-firma.com/dusch.gif" border="0" alt="">
            Der Dubaischeich
            http://sg.defined.de
            1. Hallo Scheich,

              na dass mit dem browser war natürlich sehr flapsig ausgedrückt. die MS VM unterstützt aber imho kein swing.

              Es gibt keine MS VM mehr. ;-)) Dieses Problem hat sich bald erledigt, weil jeder IE neuerdings auch ein Sun Plugin oder ein Sun JRE braucht. Naja, jeder IE unter Windows XP jedenfalls.

              viele Grüße

              Axel

              1. Hi,

                na dass mit dem browser war natürlich sehr flapsig ausgedrückt. die MS VM unterstützt aber imho kein swing.

                Es gibt keine MS VM mehr. ;-)) Dieses Problem hat sich bald erledigt, weil jeder IE neuerdings auch ein Sun Plugin oder ein Sun JRE braucht. Naja, jeder IE unter Windows XP jedenfalls.

                Ok! Ich benutze weder den IE noch WinXP... aber trotzdem gut zu wissen.

                Ciao,
                Der Dubaischeich

                --
                <img src="http://www.neue-firma.com/dusch.gif" border="0" alt="">
                Der Dubaischeich
                http://sg.defined.de
              2. Servus,

                wie ist das nun? Lauf Presse hat sich M$ und Sun geeinigt und Microsoft darf weiterhin Java -> eine JRE auf dem System anbieten.

                MS VM oder JRE? Was wird ausgeliefert?

                Gruss Matze

                1. Hallo,

                  wie ist das nun? Lauf Presse hat sich M$ und Sun geeinigt und Microsoft darf weiterhin Java -> eine JRE auf dem System anbieten.

                  Nein. Microsoft hat eine Lizenzverlängerung bis 30. September 2004 erreicht, um den _Umstieg_ seiner Kunden auf andere Java VMs zu ermöglichen.
                  http://www.microsoft.com/mscorp/java/
                  http://www.microsoft.com/windows2000/downloads/default.asp

                  Ab Dezember 2003 wird das Windows 2000 ServicePack 3, welches eine MSJVM enthält, nicht mehr zur Verfügung gestellt.

                  MS VM oder JRE? Was wird ausgeliefert?

                  Es wird den Kunden der Umstieg auf andere Sprachen oder auf eine andere Java VM empfohlen.
                  http://www.microsoft.com/mscorp/java/business.asp

                  viele Grüße

                  Axel

      2. Servus,

        //import com.sun.java.swing.*;
        import javax.swing.*;
        import java.awt.event.WindowAdapter;
        import java.awt.event.WindowEvent;
        import java.awt.Dimension;

        Da fängt es eigentlich schon an,
        das ist gar kein Applet.
        Das ist definitiv die Gui aus AWT und Swing gemixt.
        Was Du noch benötigst ist ein Import von Applet Container bzw. Package.

        Tja aber wenn es das schon wäre.
        -> Ich verweise da mal auf http://java.sun.com

        Lies Dir mal durch, wie man Applets erstellt.
        Besorg Dir eventuell auch ein Buch zum Thema alles andere führt hier vorerst zu weit.

        Gruss Matze

        1. Da fängt es eigentlich schon an,
          das ist gar kein Applet.

          stimmt daran liegt es wohl.

          Das ist definitiv die Gui aus AWT und Swing gemixt.

          nöö, das ist normal. Swing Anwendungen benutzen immer ein paar AWT Klassen...

          Dominik

          1. Da fängt es eigentlich schon an,
            das ist gar kein Applet.
            stimmt daran liegt es wohl.

            Das ist definitiv die Gui aus AWT und Swing gemixt.

            nöö, das ist normal.

            Denk mal über die Aussage im ganzen nochmals nach.

            Das ist definitiv die Gui aus AWT und Swing gemixt.
            Was Du noch benötigst ist ein Import von Applet Container bzw. Package.

            Hat niemand gesagt, dass dem nicht so sei oder dass es falsch sei.

            Gruss Matze

      3. hallo Richard,

        //import com.sun.java.swing.*;
        import javax.swing.*;
        import java.awt.event.WindowAdapter;
        import java.awt.event.WindowEvent;
        import java.awt.Dimension;
        /**

        Wenn du so anfängst, _kann_ kein Applet draus werden. Mit Swing gibt es auch nahezu unüberwindliche Probleme bei den Browsern. Für den Anfang solltest du doch nochmal bei http://www.selfjava.de/java0201.htm vorbeischauen.

        Was soll denn dein Applet überhaupt machen?

        Grüße aus Berlin

        Christoph S.

        1. Hallo Christoph,

          Mit Swing gibt es auch nahezu unüberwindliche Probleme bei den Browsern.

          Ja? Welche?

          viele Grüße

          Axel

          1. Servus,

            Ja? Welche?

            Wenn man sich nicht ungeschickt anstellt und sich mit Java Entwicklung auskennt keine.

            Gruss Matze

          2. guten Abend Axel,

            Mit Swing gibt es auch nahezu unüberwindliche Probleme bei den Browsern.
            Ja? Welche?

            Du hast recht, ich habe ein paar Dinge früher gewissermaßen "auf Halde" gelegt, weil Swing mit dem JDK 1.3 noch nicht richtig funktionierte  -  dazu hatte ich mal vor einiger Zeit eine ziemlich lebhafte Korrespondenz. Seitdem habe ich es mit Swing in Applets ganz einfach nicht mehr probiert, weil ich der Überzeugung war, es ginge eben nicht.

            Es gibt mit http://java.sun.com/docs/books/tutorial/uiswing/start/HelloSwingApplet.html ein nettes kleines Beispiel, um zu überprüfen, ob der aktuelle Browser das dafür nötige plugin hat  -  und es gibt dort auch den Hinweis: "We strongly recommend that you install the latest version; at least 1.3.1 is required for all our applets".

            Na prima. Du hast mir etwas Beschäftigung verschafft, weil ich jetzt doch versuchen werde, einige (teilweise seit Jahren) "schlummernde Entwürfe" zu aktualisieren und vielleicht doch fertigzustellen ;-)

            Grüße aus Berlin

            Christoph S.

            1. Hallo Christoph,

              Na prima. Du hast mir etwas Beschäftigung verschafft, weil ich jetzt doch versuchen werde, einige (teilweise seit Jahren) "schlummernde Entwürfe" zu aktualisieren und vielleicht doch fertigzustellen ;-)

              Naja, fürs Web sind Java-Applets trotzdem nicht geeignet. Einmal, weil der Browser extra für Java fit gemacht werden muss, besonders aber, weil es scheinbar keine 100% standardkonforme Methode des Einbindens in HTML gibt. Das hier: http://java.sun.com/j2se/1.4.1/docs/guide/plugin/developer_guide/using_tags.html ist ActiveX mit EMBED (deprecated).

              Am schönsten wäre so etwas wie http://www.alistapart.com/articles/flashsatay/ für Flash. Aber das gibt es wohl nicht.

              viele Grüße

              Axel

              1. hi Axel,

                Naja, fürs Web sind Java-Applets trotzdem nicht geeignet.

                Da sind wir wahrscheinlich (kennst ja meine diversen Wortmeldungen ein bißchen) ziemlich identischer Ansicht.

                Aber: ich bedaure diese Entwicklung aufrichtig. JAVA ist meiner Ansicht nach sehr wohl fürs WWW geeignet, aber die Streitigkeiten der Firmen und die Tatsache, daß nach der ursprünglichen Euphorie heute JAVA nicht mehr zur Standard-Ausstattung der Browser gehört, hat das Ganze ärgerlicherweise erschwert und dazu geführt, daß wir hier im Forum immer mal wieder auf die Nichttauglichkeit von Java-Applets hinweisen müssen. Aktuelles Forumsbeispiel ist im Thread [pref:t=63954&m=363347] nachzulesen. Das beste Beispiel aber, daß JAVA durchaus WWW-tauglich ist, bietet JSP  -  jaja doch, ich weiß auch, daß es zwischen Servlets und Applets ein paar unbedeutende Unterschiede gibt ;-)

                Grüße aus Berlin

                Christoph S.

      4. Hallo,

        public class TreeTableExample0
            extends java.applet.Applet {

        Ein java.applet.Applet ist als Container für Swing-Components nicht geeignet. Dafür gibt es javax.swing.JApplet.

        public void init() {
            JFrame frame = new JFrame("TreeTable");

        Ein Applet ist ein Panel. Das ist der Container für alle Elemente im Applet. Ein Frame gehört nicht zu diesen Elementen.

        Schau mal hier:
        http://java.sun.com/docs/books/tutorial/uiswing/components/applet.html

        und zum Einbinden hier:
        http://java.sun.com/docs/books/tutorial/uiswing/start/swingApplet.html

        viele Grüße

        Axel

  2. Hallo!
    Ich danke euch allen erst mal für Tips und Hinweise!
    Richard