Speichern, Event, Hintergrund getAppletContext

Javamoto

Mitglied
Hallo,

Ich habe folgendes Probelm,

Habe ein Quiz geschrieben und möchte alle 10 Fragen zwichen-speichern, fall jemand den Quiz nicht mit dem Beenden Knopf (und damit ein Event auslöst) verlässt sondern den Brwoserfenster weg klickt.

***** QUIZ *****

Beim richtig verlassen des Games "Spiel beenden"

Java:
public void abbrechen(){
    	//---------------------------------------------------------------------------------------- hier die speicherung ändern bei mehr optionen ----------------        
        SimpleDateFormat sdf = new SimpleDateFormat("dd...HH.mm.ss");
        ende = sdf.format(new Date());
        prozent = anzahl_richtige_antworten.doubleValue() / anzahl_beantwortete_fragen.doubleValue();
        prozent = prozent*10000;
        prozent = (double) Math.round(prozent);
        prozent = prozent/100;
        String dateiName = null;
        if(exp == 0)
        	dateiName = "" + name + beginn + "_Richtig_Falsch";
        else if(exp == 1)
        	dateiName = "" + name + beginn + "_Richtig_Falsch_Ranking";
        else if(exp == 2)
        	dateiName = "" + name + beginn + "_Ranking";
        else if(exp == 3)
        	dateiName = "" +  name + beginn + "_Kontrollgruppe";
        else if(exp == 4)
        	dateiName = "" + name + beginn + "_Irrelevant_Ranking";
        
        
        String inhalt = DatenSpeichern.saveBase64inTextFile(beginn, ende, dateiName,
                result,
                anzahl_richtige_antworten,
                anzahl_beantwortete_fragen, anzahl_gelesene_fragen, prozent, heading);
        
         URL url = null;
    try {
    	if(exp == 0)
            url = new URL(URL_SERVER+"save.php?filename=Richtig_Falsch & inhalt="+inhalt);
      	else if(exp == 1)
      	  url = new URL(URL_SERVER+"save.php?filename=Richtig_Falsch_Ranking & inhalt="+inhalt);
      	else if(exp == 2)
            url = new URL(URL_SERVER+"save.php?filename=Ranking & inhalt="+inhalt);
          else if(exp == 3)
            url = new URL(URL_SERVER+"save.php?filename=Kontrollgruppe & inhalt="+inhalt);
          else if(exp == 4)
              url = new URL(URL_SERVER+"save.php?filename=Irrelevant_Ranking & inhalt="+inhalt);          
                       
                  
          AppletContext Context = getAppletContext();
          Context.showDocument(url, "_blank");
          
    }
    catch (Exception e) {
        
    }


        JOptionPane dialog = new JOptionPane();
        String string = "Du hast " + prozent + "% der Fragen richtig beantwortet. \nVielen Dank für deine Teilnahme am Experiment!";
        JTextArea fertig = new JTextArea(string);
        fertig.setEditable(false);
        fertig.setOpaque(false);
        fertig.setFont(new Font("Arial", Font.PLAIN, 20));                   
        dialog.showMessageDialog(null, fertig);
        this.setVisible(false);
        
    }


Jetzt habe ein ein neues event definiert, das Zwischenspeichern heisst,
sollte genau dasselbe tun aber in Hintergrund. Der Anwender sollte davon nichts mitbekommen.

Java:
 public void zwischenspeichern(){
    	//---------------------------------------------------------------------------------------- hier die speicherung ändern bei mehr optionen ----------------        
    	SimpleDateFormat sdf = new SimpleDateFormat("dd...HH.mm.ss");
        ende = sdf.format(new Date());
        prozent = anzahl_richtige_antworten.doubleValue() / anzahl_beantwortete_fragen.doubleValue();
        prozent = prozent*10000;
        prozent = (double) Math.round(prozent);
        prozent = prozent/100;
        String dateiName = null;
        if(exp == 0)
        	dateiName = "" + name + beginn + "_Richtig_Falsch";
        else if(exp == 1)
        	dateiName = "" + name + beginn + "_Richtig_Falsch_Ranking";
        else if(exp == 2)
        	dateiName = "" + name + beginn + "_Ranking";
        else if(exp == 3)
        	dateiName = "" +  name + beginn + "_Kontrollgruppe";
        else if(exp == 4)
        	dateiName = "" + name + beginn + "_Irrelevant_Ranking";
            
        
        String inhalt = DatenSpeichern.saveBase64inTextFile(beginn, ende, dateiName,
                result,
                anzahl_richtige_antworten,
                anzahl_beantwortete_fragen, anzahl_gelesene_fragen, prozent, heading);
        
         URL url = null;
    try {
    	if(exp == 0)
            url = new URL(URL_SERVER+"save.php?filename=Richtig_Falsch & inhalt="+inhalt);
      	else if(exp == 1)
      	  url = new URL(URL_SERVER+"save.php?filename=Richtig_Falsch_Ranking & inhalt="+inhalt);
      	else if(exp == 2)
            url = new URL(URL_SERVER+"save.php?filename=Ranking & inhalt="+inhalt);
          else if(exp == 3)
            url = new URL(URL_SERVER+"save.php?filename=Kontrollgruppe & inhalt="+inhalt);
          else if(exp == 4)
              url = new URL(URL_SERVER+"save.php?filename=Irrelevant_Ranking & inhalt="+inhalt);          
                       
                  
          AppletContext Context = getAppletContext();
          Context.showDocument(url, "_blank");
          // inhlat nicht
          //self nicht
          // null
    }
    catch (Exception e) {
        
    }

       
    }

Leider öffnet sich immer wieder ein neues Fenster im Hintergrund, und habe schon paar Parameter bei
Zeile 41: Context.showDocument(url, "_blank"); versucht und zwar ( inhalt, "_self", null ) keines hat Verbesserung gebracht.

Irgendwelche Idee was ich da ändern muss ... bin schon seit halben Tag am ausprobieren ???:L
 
Zuletzt bearbeitet:
Das ist nun mal der Sinn der Methode showDocument:
Requests that the browser or applet viewer show the Web page indicated by the url argument.
Wüsste aber jetzt nicht was man sonst machen könnte. Eventuell reicht ein openStream() an der URL aus. Denn Stream dann aber wieder schließen ;-)
 
1).

Kann ich dann mit ein zweiter Applet irgendwie zwischen-speichern, auf dem ersten Applet zurgreifen und auf
Context.showDocument(url, null); verzichten ??
z.B: Zeile 41

Java:
  AppletContext Context = getAppletContext();

Applet AppletNo2Applet = getAppletContext.getApplet( "Context " );

2). Eine weitere Option wäre das Fenster was aufgeht sofort zu schließen, da würde der Anwender außer ein wenig Verzögerung auch nicht viel merken.
 
Zuletzt bearbeitet:

Zurück
Oben