In Fenster auslagern und dazu eigens erstellte Klasse importieren

Hallo,

ich ,der mit der Passwortprüfung, bin’s nochmal!
Und zwar wollte ich die PW (Passwortprüfung), in ein eigenes Fenster auslagern und dazu meine Klasse paint in die Klasse mit der PW fenster importieren. Da ich ja getAppletContext() in der Klasse fenster nicht nutzen kann muss ich es mit der Klasse paint (Applet) definieren und die Klasse paint ja dann in Klasse fenster reinbringen. Ich hoffe ich nerv euch nicht aber…

Klasse paint:

import java.applet.*;
import java.awt.*;
import java.net.*;
import fenster;
public class paint extends Applet
{
  fenster Passwortfenster;
  
  public void init()
  {
    URL appletseite=getCodeBase();
    AppletContext dasApplet=getAppletContext();
    
    fenster Passwortfenster=new fenster(appletseite, dasApplet);
    Passwortfenster.setSize(500,200);
    Passwortfenster.setVisible(true);
    Passwortfenster.setTitle("Lizenzprüfung");
  }
  
  public void start()
  {
    Passwortfenster.setVisible(true);
  }
  
  public void stop()
  {
    Passwortfenster.dispose();
  }
}

Klasse fenster:

import java.applet.*;
import java.awt.*;
import java.net.*;
public class fenster extends Frame
{
  Button OKButton, NeinButton;
  
  TextField Passwortfeld;
  int i=0;
  
public fenster(URL adresse, AppletContext appletumgebung);
  {
    appletseite=adresse;
    dasApplet=appletumgebung;
    
    FlowLayout Fensterlayout1=new FlowLayout (FlowLayout.CENTER,20,20);
    setLayout(Fensterlayout1);
    
    setBackground(Color.white);
    setForeground(Color.blue);
    
    Label Text1=new Label("Passwort", Label.CENTER);
    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 handleEvent(Event evt)
  {
    if (evt.id==Event.WINDOW_DESTROY) 
    {
      dispose();
      return true;
    }
    return super.handleEvent(evt);
  }
  
  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 seite=new URL(appletseite, "sorry.html");
          dasApplet.showDocument(seite);
        } 
        catch(MalformedURLException ex)
        {
          
        }
      } 
    } 
    return false;
  }
  public void PasswortPruefen()
  {
    String eingabetext="";
    if (eingabetext!=null)
    {
      eingabetext=Passwortfeld.getText();
      if (i<=3) 
      {
        if (eingabetext.equals("super")) 
        {
          try 
          {
            URL seite=new URL(appletseite, "Test.html");
            dasApplet.showDocument(seite);
          }
          catch(MalformedURLException ex)
          {
            Graphics g=getGraphics();
            g.drawString("Ein Fehler ist aufgetreten: "+ex,10,100);
          }
        } 
        else 
        {
          Dialog Fehlermeldung=new Dialog(this, "Ein Fehler ist aufgetreten!", false);
          Fehlermeldung.setSize(200,200);
          Fehlermeldung.setLocation(100,100);
          Fehlermeldung.setVisible(true);
          Label Dia1Text1=new Label("Falsches Passwort!", Label.CENTER);
          Fehlermeldung.add(Dia1Text1);
        } 
      }  
    }
    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);
      } 
    }
  }
}

Abgesehen von all den Punkten, auf die ich dich letztes mal schon hingewiesen habe, und die du ignoriert hast, habe ich daran jetzt keine konkrete Frage ablesen können…

Ja ich weiß aber ich habe alles übernommen damit es funktioniert.
Das andere ändere ich ja ich noch, aber erst wenn ich das Passwortkapitel abgeschlossen habe.
Dann werden die aktuellen Listener und so erklärt.

Die Frage:

Wie ich die Klasse importieren kann und ob der Rest auch einigermaßen stimmt.

Schon mal was von Java Coding Conventions gehört?
Du schreibst doch kein VB- oder C#-Programm…
Klassennamen beginnen demnach mit einem Großbuchstaben, Methoden- und Variablennamen mit einem Kleinbuchstaben. Konstanten werden durchgängig groß geschrieben.

Objekte, und dazu gehören Strings, vergleicht man mit equals()!

Wenn im Code irgendwo getGraphics() auftaucht, ist das in 99 von 100 Fällen falsch.
Ich weiß nicht… wo lernt man nur solche Anfängerfehler?

Man erbt nicht von Fenster-Klassen (Frame, Dialog oder ihren Swing-Nachfolgern).
Man erzeugt sich Objekte und setzt deren Eigenschaften und die Inhalte. Also genau so, wie du es mit deinem Dialog gemacht hast.

Mit AWT werden heute keine GUIs mehr geschrieben. Heute erzeugt man gute GUIs mit Swing.

Überhaupt wirkt der Code wie aus den Anfängen der Java-Programmierung.
Liegt wohl auch daran, dass deine Klassen total veralteten Code aus Java 1.0 verwenden.
Seit Java 1.1 wird das Event Delegation Model verwendet. Du bastelst da noch was mit dem veralteten Event-Model.

Am besten, du besorgst dir mal ein aktuelles Buch, oder liest mal in aktuellen Seiten zur Java-Programmierung.

[QUOTE=Unregistriert]
Wie ich die Klasse importieren kann und ob der Rest auch einigermaßen stimmt.[/QUOTE]

Abgesehen von allem, was L-ectron-X gesagt hat: Meine Kristallkugel sagt mir, dass du wissen willst, wie man zwei .class-Dateien in einem -Tag einfügt… Falls das stimmt: Pack’ die Dateien in eine JAR. Zugegeben, sowas wie http://docs.oracle.com/javase/tutorial/deployment/applet/deployingApplet.html finde ich auch irgendwie … schwer zugänglich … sieht so kompliziert aus… IST es auch :wink: aber mit ein bißchen Copy&Paste der vorgegebenen Dateien sollte das zu machen sein…

Ich habe doch gesagt das ich ein neues Buch von meiner Freundin zu Weihnachten bekomme.
Bis dahin wollte ich eben noch das alte benutzen.

Danke Marco, ich glaube mit deiner Idee geht es. Danke :slight_smile: