Java Applet als eigenständiges Programm? exe?

Jasi

Mitglied
Hallo

Ich bin C++ Anfänger und auch Java Anfänger. Wenn man bei C++ ein Programm kompiliert hat man ja schon eine Exe, die man an zB einen Tutor schicken kann, um sich ein Lob abzuholen.
Ist das nun auch irgendwie mit Java Applets möglich, oder sind das Bausteine die irgendwo integriert sein 'müssen'? Falls ja, was muss ich tun, aus einem Java Applet eine eigenständige kleine Anwendung zu machen - ein normales Java Programm?
Mein Programm zeigt nur ein Fenster an, ein Scroll down Menü und einen Button. Bei Klick auf den Button kommt eine Textausgabe.
Ich benutze Eclipse.

Danke schonmal für Antworten!

EDIT:
Ok. Ein Applet steht wohl immer im Browser. Ich werd mcih jetzt mal damit beschäftigen. danke.
 
Zuletzt bearbeitet:
Da die Applet-Klasse ja vom Panel abgeleitet ist, kann diese auch als solches verwendet werden. Man kann also eine Instanz des Applets beispielsweise einem Frame zuweisen und es so als eigenständige Anwendung benutzen. Man kann sogar so weit gehen, dass man seiner Applet-Klasse einen main()-Methode gibt, die ein Frame erzeugt und diesem eine Instanz von sich selber hinzufügt. Dann kann etwa das gleiche JAR-Archiv im Browser und standalone verwendet werden.

Code:
public class AppletAutomationenKonfig extends JApplet {

  private static String[] arguments;             //Die dem Applet übergebenen Argumente (Standalone)
  private static boolean isStandalone = false;   //Wird Applet im Browser oder Standalone ausgeführt?

  private Container contentPane;          //Der Inhalts-Container für das Applet
  //...


  /**
   * Das Applet konstruieren
   */
  public AppletAutomationenKonfig() {
  }


  /**
   * Main-Methode (Wenn das Applet als Standalone-Anwendung ausgefürt wird)
   *
   * @param args String[] (Der Applikation übergebene Argumente)
   */
  public static void main(String[] args) {
    try {
      arguments = args;
      if (!(hasArgument("DB_Name") && hasArgument("DB_Type") && hasArgument("DB_IP"))) {
        JOptionPane.showMessageDialog(null, "Sie müssen der Anwendung \"AutomationenKonfig\" zumindest die Parameter " +
                                      "für den Namen, den Typ und die IP-Adresse des Datenbank-Servers übergeben!",
                                      "Fehlende Parameter", JOptionPane.WARNING_MESSAGE);
        System.exit(0);
      } else {
        AppletAutomationenKonfig applet = new AppletAutomationenKonfig();
        applet.isStandalone = true;
        applet.init();
        applet.start();

        JFrame frame = new JFrame("PARITy Automationen Konfiguration - Version 1.0");
        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().add(applet, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(1000, 800);
        frame.show();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }


  /**
   * Das Applet initialisieren (Mit StackTrace bei nicht gefangenen Ausnahmen)
   */
  public void init() { 
    try {
      jbInit();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * Initialisierung der Komponenten
   *
   * @throws Exception
   */
  private void jbInit() throws Exception {
    this.setSize(new Dimension(1000, 700));
    contentPane = this.getContentPane();
    contentPane.setLayout(new BorderLayout());

    //...
    if (this.getParameter("Print_DB_Config", "false").equals("true")) {
      SQLConfig.printSQLConfig();
    }
    //...
  }


  /**
   * Parameterwert holen
   *
   * @param key String (Name des Parameters)
   * @param def String (Default-Wert des Parameters)
   * @return String (Parameter-Wert, wenn null der Default-Wert)
   */
  public String getParameter(String key, String def) {
    return (isStandalone ? getArgument(key, def) : (getParameter(key) != null ? getParameter(key) : def));
  }

  /**
   * Argument aus der Argumenten-Liste holen, mit Default-Wert
   *
   * @param key String (Das gesuchte Argument)
   * @param def String (Der Default-Wert)
   * @return String (Wert des gesuchten Argumentes oder Default-Wert)
   */
  public static String getArgument(String key, String def) {
    String result = def;
    if (arguments != null) {
      if (arguments.length > 0) {
        int i = 0;
        while ((i < arguments.length) && (result.equals(def))) {
          if (arguments[i].startsWith(key + "=")) {
            return arguments[i].substring(key.length() + 1);
          }
          i++;
        }
      }
    }
    return result;
  }

  /**
   * Argument aus der Argumenten-Liste holen
   *
   * @param key String (Das gesuchte Argument)
   * @return String (Wert des gesuchten Argumentes)
   */
  public static String getArgument(String key) {return getArgument(key, "");}

  /**
   * Überprüfen, ob das gesuchte Argument in den Argumenten vorhanden ist
   *
   * @param key String (Das gesuchte Argument)
   * @return boolean (Ist das gesuchte Argument in den Aurgumenten vorhanden?)
   */
  public static boolean hasArgument(String key) {
    boolean result = false;
    if (arguments != null) {
      int i = 0;
      while ((i < arguments.length) && (result != true)) {
        if (arguments[i].startsWith(key + "=")) {
          result = true;
        }
        i++;
      }
    }
    return result;
  }
  //...
}

Hier habe ich übrigens auch noch das Einlesen der Programm-Parameter mit reingenommen. Dabei werden, wenn das Applet standalone ausgeführt wird, die dem Programm übergebenen Argumente verwendet, ansonsten werden die Parameter aus der HMTL-Datei, in die das Applet eingebettet ist.

MfG UseTheSource
 
Zuletzt bearbeitet:
Zurück