Katharina: Thread

Hallo!

Ich hoffe, jemand kann mir weiterhelfen. Ich habe ein Programm und möchte ihm sagen, warte solange bis eine Eingabe getätigt wurde oder wenn das zu kompliziert ist, warte 20sec. Geht das nur wenn ich einen extra Thread starte oder ist das auch irgendwie anders möglich?

Wäre super, wenn mir jemand weiterhelfen könnte.
Lg Katharina

  1. Hallo,

    Ich habe ein Programm und möchte ihm sagen, warte solange bis eine Eingabe getätigt wurde oder wenn das zu kompliziert ist, warte 20sec. Geht das nur wenn ich einen extra Thread starte oder ist das auch irgendwie anders möglich?

    Keine Ahnung, was du machen willst.
    Bitte erkläre sehr viel genauer.
    (Was für ein Programm? Welche Eingabe? Wie bestätigen? Etc.)

    Gruß
    Slyh

    1. » (Was für ein Programm? Welche Eingabe? Wie bestätigen? Etc.)
      ich habe ein Programm in Java geschrieben mit 2Klassen, in dem XML-Dateien in SGML-Dateien konvertiert werden. Framemaker hatte mit bestimmten Konvertierungen Probleme.

      In der einen Klasse "gui" habe ich alles bezüglich einer graphischen Oberfläche. Der Benutzer kann sich dort zuerst einen Ordner aussuchen, in dem die zu konvertierenden XML-Dateien liegen, und dann sucht der Benutzer einen Ordner aus, wo die konvertierenden SGML-Dateien abgelegt werden sollen. Es könnte jedoch passieren, dass in dem SGML-Ordner schon der Dateiname vorhanden ist. Und hierbei entsteht mein Problem. Falls die Datei vorhanden ist, kommt ein FEnster, in dem der BEnutzer gefragt wird, "möchten Sie folgende Datei überschreiben". Ich möchte, dass das Programm solange wartet bis der Benutzer ja ("überschreibe") oder nein("nicht überschreiben") eingegeben hat.

      Ich hoffe das ist etwas verständlicher.
      Lg Katharina

      1. ich denke du suchst sowas wie setTimeout http://selfhtml.teamone.de//javascript/objekte/window.htm#set_timeout

        grüsse Tobias

        1. ich denke du suchst sowas wie setTimeout
          http://selfhtml.teamone.de//javascript/objekte/window.htm#set_timeout

          Die Funktion geht meines Wissens nur in HTML und nicht in Java.
          Lg Katharina

        2. Hallo!

          Ich habe einen JOptionPane und möchte selber programmieren, was beim Klicken auf "Ja" und "Nein" passieren soll. Weiß jemand, ob das Möglich ist und wenn ja, wie oder sollte ich dann doch lieber einen JDialog verwenden.

          Wäre super, wenn ihr mir weiterhelfen könntet. Hab irgendwie im INternet dazu nichts gefunden.

          Lg Katharina

      2. Hi,

        dann ist wohl (wie Martin schon erwähnt hat) ein modaler Dialog das Mittel deiner Wahl. Die API wird dir genaueres verraten (Klasse: Dialog/JDialog, Stichwort: setModal()).

        Gruß

        Jimbo

      3. Hallo,

        Und hierbei entsteht mein Problem. Falls die Datei vorhanden ist, kommt ein FEnster, in dem der BEnutzer gefragt wird, "möchten Sie folgende Datei überschreiben". Ich möchte, dass das Programm solange wartet bis der Benutzer ja ("überschreibe") oder nein("nicht überschreiben") eingegeben hat.

        Was ist denn das für ein Fenster? Ein JFrame oder JDialog? (Kann ja
        eigentlich nur ein JFrame sein, da bei einem JDialog das von dir
        beschriebene Problem gar nicht auftreten würde.)

        Ich würde dir hier von der Verwendung eines JDialog abraten. Außer du
        hast ganz spezifische Anforderungen an das Aussehen deines Dialoges.

        Für (einfache) Ja/Nein/Abbrechen- und OK-Meldungen existiert die Klasse
        javax.swing.JOptionPane. (Du arbeitest doch mit Swing, oder?)

        Sie bietet einige statische Fabrikmethoden, die es dir ermöglichen
        den angezeigten Dialog zu konfigurieren. Die Methoden beginnen alle
        mit "show".

        Wenn du bspw. einen ganz simplen Ja/Nein-Dialog haben möchtest,
        könntest du folgenden Code verwenden:

        JOptionPane.showConfirmDialog(parent,
                                        "Soll Datei XYZ wirklich überschrieben werden?",
                                        "Überschreiben bestätigen",
                                        JOptionPane.YES_NO_OPTION);

        (Ungetester Code!)

        Die so erzeugten Dialoge haben ein einheitliches Aussehen, und werden
        je nach verwendetem Look&Feel möglichst gut an die Abfrage-Dialoge
        der jeweiligen Plattform angepaßt. (Die Dialoge sind modal.
        D.h., daß die Ausführung des Programms erst weiter geht, wenn das
        Dialog geschlossen wurde.)

        Ich hoffe das ist etwas verständlicher.

        Viel besser, ja. :)

        Gruß
        Slyh

        1. Hallo,

          ihr hattet recht, mein Warnungsfenster war vom Type "Frame" und somit "nicht-modal". Ich habe es jetzt in ein JOptionPane umgewandelt. Es funktioniert :-) Das Programm wartet bis ich Ja/Nein/Abbrechen gedrückt habe. Vielen vielen Dank :-))

          Jetz muss ich nur noch hinbekommen, dass das Programm wirklich das macht, was ich möchte, wenn ich "Ja" oder "Nein" betätige, aber so schwer ist das hoffentlich nicht. Wenn das mit JOptionPane nicht möglich ist, werde ich wohl doch JDialog verwenden. Mal sehn.

          Nochmal vielen vielen Dank
          Katharina

          1. Hallo,

            Jetz muss ich nur noch hinbekommen, dass das Programm wirklich das macht, was ich möchte, wenn ich "Ja" oder "Nein" betätige, aber so schwer ist das hoffentlich nicht. Wenn das mit JOptionPane nicht möglich ist, werde ich wohl doch JDialog verwenden. Mal sehn.

            Dies wäre eine gute Gelegenheit für dich, dir anzugewöhnen, die Doku
            zu lesen. Die Doku zu JOptionPane sagt dir nämlich genau, welche
            Bedeutung der Rückgabewert der "show..."-Methoden hat, und wie du damit
            auswerten kannst, welcher Button gedrückt wurde.
            Du findest in der Doku auch einen Link auf ein Tutorial von Sun.

            (In deinem Java-Buch solltest du außerdem eine Beschreibung der Klasse
            "JOptionPane" finden.)

            Gruß
            Slyh

            1. Um ehrlich zu sein, such ich meistens im Internet und schreibe hier erst rein, wenn ich nicht weiterkomme. Im Internet hab ich nach langem Suchen gefunden, dass er einen int-Wert zurückgibt. "0" bei Ja und "1" bei Nein. Habe ein Java2-Buch und da steht leider nichts über JOptionPane drinnen.

              Vielen vielen Dank für deine Tipps.
              Lg Katharina

              1. Hi Katharina,

                Slyh meinte die für eine JDK/SDK-Version spezifischen API-Dokumentationen ("JavaDocs...").
                Auch wenn das Internet mittlerweile zu einer beeindruckend umfangreichen Knowledge-Base geworden ist, so sind doch diese _offiziellen_ Dokumente _immer_ die _erste_ Quelle für eine entsprechende Informationsrecherche.

                Viele Grüße,
                Martin Jung

  2. Hi,

    Ich hoffe, jemand kann mir weiterhelfen. Ich habe ein Programm und möchte ihm sagen, warte solange bis eine Eingabe getätigt wurde oder wenn das zu kompliziert ist, warte 20sec. Geht das nur wenn ich einen extra Thread starte oder ist das auch irgendwie anders möglich?

    So lange Du _keinen_ weiteren Thread _explizit_ startest, sollte dieses Verhalten eigentlich "automatisch" eintreten.
    D.h., nur nachdem der Benutzer entweder "OK" oder "Abbrechen" in einem entsprechenden Dialog (Stichwort: "modal") gedrückt hat, wird das Programm fortgeführt.

    Viele Grüße,
    Martin Jung