Passwortprüfung, warum funzt das nicht?

Hallo,

ich bin dabei ein Java-Applet ( Malprogramm zu schreiben) aber irgendwie funzt die Passwortprüfung nicht.
Ich möchte eine neue Seite laden in der das malprogramm ist, indem ich das richtige Passwort in diesem Fall super eingebe und dann auf OK drücke.
Kann mir da jemand helfen?

[
Hallo,

ich habe ein Applet programmiert und möchte es nun per Passwortprüfung als HTML-Seite Laden:

der Code der Prüfung:

import java.applet.*;
import java.awt.*;
import java.net.*;
public class Testlizenzprüfung extends Applet
{
  Button OKButton;
  Button NeinButton;
  
  TextField Passwortfeld;
  int i=0;
  
  Font Schrift1spezial=new Font ("SansSerif", Font.BOLD|Font.ITALIC,50);
  Font Schrift1normal=new Font ("SansSerif", Font.PLAIN,20);
  Font Schrift2spezial=new Font ("Serif", Font.BOLD|Font.ITALIC,20);
  Font Schrift2normal=new Font ("Serif", Font.PLAIN,20);
  Font Schrift3spezial=new Font ("Monospaced", Font.BOLD|Font.ITALIC,20);
  Font Schrift3normal=new Font ("Monospaced", Font.PLAIN,20);
  Font Schrift4spezial=new Font ("Dialog", Font.BOLD|Font.ITALIC,20);
  Font Schrift4normal=new Font ("Dialog", Font.PLAIN,20);
  Font Schrift5spezial=new Font ("ZapfDingbats", Font.BOLD|Font.ITALIC,20);
  Font Schrift5normal=new Font ("ZapfDingbats", Font.PLAIN,20);
  
  public void init()
  {
    setBackground (Color.white);
    setForeground (Color.black);
    
    Label Text1=new Label("Passwort", Label.CENTER);
    Text1.setBackground (Color.lightGray);
    Text1.setForeground (Color.black);
    Text1.setFont (Schrift1spezial);
    add(Text1);
    
    TextField Passwortfeld=new TextField(10);
    add(Passwortfeld);
    
    Button OKButton=new Button("OK");
    OKButton.setBackground(Color.lightGray);
    OKButton.setForeground(Color.black);
    OKButton.setSize(50,50);
    add(OKButton);
    
    Button NeinButton=new Button("Nein");
    NeinButton.setBackground(Color.lightGray);
    NeinButton.setForeground(Color.black);
    NeinButton.setSize(50,50);
    add(NeinButton);
  }
  
  public boolean action(Event evt, Object arg)
  {
    if (evt.target instanceof Button) 
    {
      String Knopf=arg.toString();
      if (Knopf=="OK") 
      {
        i++;
        PasswortPruefen();
      }
      if (Knopf=="Nein") 
      {
        try 
        { 
          URL appletseite=getCodeBase();
          URL seite=new URL(appletseite, "sorry.html");
          AppletContext dasApplet=getAppletContext();
          dasApplet.showDocument(seite);
        } 
        catch(MalformedURLException ex)
        {
          Graphics g=getGraphics();
          g.drawString("Ein Fehler ist aufgetreten!: "+ex,10,100);
        } 
      } 
    } 
    return false;
  }
  public void PasswortPruefen()
  {
    String eingabetext="";
    if (eingabetext!=null)
    {
      eingabetext=Passwortfeld.getText();
      if (i<=3) 
      {
        if (eingabetext=="super") 
        {
          try 
          {
            URL appletseite=getCodeBase();
            URL seite=new URL(appletseite, "Test.html");
            AppletContext dasApplet=getAppletContext();
            dasApplet.showDocument(seite);
          }
          catch(MalformedURLException ex)
          {
            Graphics g=getGraphics();
            g.drawString("Ein Fehler ist aufgetreten: "+ex,10,100);
          }
        } 
        else 
        {
          Graphics g=getGraphics();
          g.drawString("Falsches Passwort!" ,100,100);
        }  
      }
      else
      {
        try 
        { 
          URL page=new URL(getCodeBase(),"sorry.html");
          getAppletContext().showDocument(page, "xyz");
        } 
        catch(MalformedURLException ex)
        {
          Graphics g=getGraphics();
          g.drawString("Fehler beim Laden: "+ex,10,100);
        } 
      }
    }
  } 
}

Kann mir da jemand helfen wäre echt nett …

Sry hab die Erklärung ausversehen doppelt reinkopiert :stuck_out_tongue_winking_eye:

Da ist nicht soo viel richtig dran.

  • In der Zeile
    TextField Passwortfeld=new TextField(10);
    wird eine neue Variable angelegt. Die Instanzvariable ‘Passwortfeld’ bleibt ‘null’. Die Zeile muss
    Passwortfeld=new TextField(10);
    lauten

  • Um Fehlermeldungen (speziell Exceptions) zu sehen:
    Start->Einstellungen->Systemsteuerung->Java->Erweitert->Java Konsole->“Konsole anzeigen”

  • Strings nicht mit == sondern mit .equals vergleichen

Ansonsten:

  • Keine Umlaute in Klassennamen
  • Variablennamen klein schreiben
  • Die ‘action’-Methode ist deprecated. Verwende einen ActionListener
  • Besser Swing (JApplet, JTextField…) statt AWT (Applet, TextField…) verwenden. Aber notfalls tut’s auch AWT.

Danke aber das mit dem Doppelten-Gleichheitszeichen oder .equals ist egal außer das .equals ein anderes Verfahren verwendet. Zumindest steht dies in meinem Buch.
Danke!

Hey super danke es funktioniert, da hat mir mein Buch nen Quak erzählt!
Mit .equals funktioniert es! (== geht nicht)
Danke!!!

Hier noch der Coder falls es jemand braucht:

import java.applet.*;
import java.awt.*;
import java.net.*;
public class Testlizenzpruefung extends Applet
{
  Button OKButton;
  Button NeinButton;
  
  TextField Passwortfeld;
  int i=0;
  
  Font Schrift1spezial=new Font ("SansSerif", Font.BOLD|Font.ITALIC,50);
  Font Schrift1normal=new Font ("SansSerif", Font.PLAIN,20);
  Font Schrift2spezial=new Font ("Serif", Font.BOLD|Font.ITALIC,20);
  Font Schrift2normal=new Font ("Serif", Font.PLAIN,20);
  Font Schrift3spezial=new Font ("Monospaced", Font.BOLD|Font.ITALIC,20);
  Font Schrift3normal=new Font ("Monospaced", Font.PLAIN,20);
  Font Schrift4spezial=new Font ("Dialog", Font.BOLD|Font.ITALIC,20);
  Font Schrift4normal=new Font ("Dialog", Font.PLAIN,20);
  Font Schrift5spezial=new Font ("ZapfDingbats", Font.BOLD|Font.ITALIC,20);
  Font Schrift5normal=new Font ("ZapfDingbats", Font.PLAIN,20);
  
  public void init()
  {
    setBackground (Color.white);
    setForeground (Color.black);
    
    Label Text1=new Label("Passwort", Label.CENTER);
    Text1.setBackground (Color.lightGray);
    Text1.setForeground (Color.black);
    Text1.setFont (Schrift1spezial);
    add(Text1);
    
    Passwortfeld=new TextField(10);
    add(Passwortfeld);
    
    Button OKButton=new Button("OK");
    OKButton.setBackground(Color.lightGray);
    OKButton.setForeground(Color.black);
    OKButton.setSize(50,50);
    add(OKButton);
    
    Button NeinButton=new Button("Nein");
    NeinButton.setBackground(Color.lightGray);
    NeinButton.setForeground(Color.black);
    NeinButton.setSize(50,50);
    add(NeinButton);
  }
  
  public boolean action(Event evt, Object arg)
  {
    if (evt.target instanceof Button) 
    {
      String Knopf=arg.toString();
      if (Knopf=="OK") 
      {
        i++;
        PasswortPruefen();
      }
      if (Knopf=="Nein") 
      {
        try 
        { 
          URL appletseite=getCodeBase();
          URL seite=new URL(appletseite, "sorry.html");
          AppletContext dasApplet=getAppletContext();
          dasApplet.showDocument(seite);
        } 
        catch(MalformedURLException ex)
        {
          Graphics g=getGraphics();
          g.drawString("Ein Fehler ist aufgetreten!: "+ex,10,100);
        } 
      } 
    } 
    return false;
  }
  public void PasswortPruefen()
  {
    String eingabetext="";
    if (eingabetext!=null)
    {
      eingabetext=Passwortfeld.getText();
      if (i<=3) 
      {
        if (eingabetext.equals("super")) 
        {
          try 
          {
            URL appletseite=getCodeBase();
            URL seite=new URL(appletseite, "Test.html");
            AppletContext dasApplet=getAppletContext();
            dasApplet.showDocument(seite);
          }
          catch(MalformedURLException ex)
          {
            Graphics g=getGraphics();
            g.drawString("Ein Fehler ist aufgetreten: "+ex,10,100);
          }
        } 
        else 
        {
          Graphics g=getGraphics();
          g.drawString("Falsches Passwort!" ,100,100);
        }  
      }
      else
      {
        try 
        { 
          URL page=new URL(getCodeBase(),"sorry.html");
          getAppletContext().showDocument(page, "xyz");
        } 
        catch(MalformedURLException ex)
        {
          Graphics g=getGraphics();
          g.drawString("Fehler beim Laden: "+ex,10,100);
        } 
      }
    }
  } 
}

[QUOTE=Unregistriert]Danke aber das mit dem Doppelten-Gleichheitszeichen oder .equals ist egal außer das .equals ein anderes Verfahren verwendet. Zumindest steht dies in meinem Buch.
Danke![/QUOTE]

Der Hinweis von Marco mit ‘equals’ für Objekte war schon richtig.
Wenn du hier Leuten über den Mund fährst, die was Kreatives beitragen, wundere dich nicht über nachlassendes Interesse an deinen Posts.

Ich will hier niemand über den Mund fahren ich bin ja sehr froh über seine Hulfe die auch geklappt hat,
(nochmal danke dafür). Außerdem habe ich mich bereits verbessert.

@Jango: Er ist Marco13, so wie ich das sehe, nicht über den Mund gefahren.
Er meinte, dass in seinem Buch Quark stehen würde, also eine Falschinformation oder Halbwissen verbreitet wurde.

Schlecht! Welches Buch ist das? Das würde mich interessieren.

Das ist ein älteres Buch (könnte also sein das es früher einmal gegangen ist und jetzt eben nicht mehr ;] ):

´Das Einsteigerseminar Java`

Da stehen immer so teile des Codes drin denn Rest musst du selbst herausfinden als Übung. Sind auch einige falsche Codes zum berichtigen (mit Lösung) und noch andere Übungen dabei.
Denke das man dieses Buch nicht mehr kaufen kann.

Werde mir jetzt dann ein aktuelleres kaufen.

Nein. Gerade ältere Bücher weisen darauf hin, das Objekte nur mit equals verglichen werden können. Bei neueren Büchern könnte ich mir vorstellen, dass man sich mehr an das .NET Framework von MS richtet und Java zulässt auch mit ‚==‘ zu vergleichen.
Das wäre nicht die erste Übernahme von nützlichen Features.

Trotzdem bleibt ein übler Beigeschmack.
In einem Buch falsche Informationen zu publizieren, sagt etwas über die Qualität des Buches und den Author aus.

@Jango: Dieser gern gemachte Fehler wird nicht erst seit .NET in Java gemacht.
Und das == kommt auch nicht aus .NET oder aus Java, sondern existiert schon viel länger.

Vielleicht hängt das Problem auch damit zusammen, dass es “oft” funktioniert, Strings mit == zu vergleichen (gleiche Strings werden intern in einem Pool verwaltet, so dass zwei gleiche Strings dann of auch dieselben sind, und der identitätsvergleich mit == funktioniert). Seine Grenze findet das dann… unter sehr spezifischen Bedingungen, und speziell wenn der String erst zusammengebaut oder vom User eingegeben wurde…

Nun ja ob ihr mir es jetzt glaubt oder nicht dieses Buch ist älter und zwar deutlich!
Es wird hier das JDK 1.3 behandelt. ich weiß das ihr jetzt lacht aber ich habe diese Buch gekauft als Java erst rauskam, habe darin herumgestöbert und es ins Regal gelegt und jetzt hab ich es wiederentdeckt.

Ich zitiere Das Einsteigerseminar Java 2:

… Sie hätten hier auch das doppelte Gleichheitszeichen verwenden können, .equals() ist allerdings besser geeignet …

Aber ich denke das ist eigentlich alles unwichtig. Hauptsache es funktioniert jetzt, oder?
Also CLOSE das Thema.