Aufruf einer neuen Klasse durch Button-Klick

Status
Nicht offen für weitere Antworten.

Paule

Aktives Mitglied
Hallo,

ich habe folgendes Problem: Ich habe zwei Klassen geschrieben. Die eine soll ein Login-Fenster sein. Wenn ich nun auf den Button "Login" drücke möchte, dass eine neue Klasse angezeigt wird, nämlich das MainWindow. Eben so, wie es auf jeder Internetseite geschieht sobald man sich eingeloggt hat.
Mein Problem: es funktioniert nicht. Ich habe dem Button einen ActionListener hinzugefügt und auch die actionPerformed-Methode geschrieben.
Oder mach ich da grundsätzlich was falsch?
Hier meine beiden Klassen

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.Applet;

public class Login extends Applet implements ActionListener {   
	JLabel username = new JLabel("Nutzername: ");
	JLabel password = new JLabel("Passwort: ");
	JTextField nName = new JTextField(10);
	JPasswordField pwort = new JPasswordField(10);
	JButton login = new JButton("Login");
	JButton reg = new JButton("neu registrieren");
	
	
	
	  public void init() {
	  	setSize(400,200);
	  	
	  	login.addActionListener(this); // Hier füge ich den Listener zu
	  	
	  	JPanel pane = new JPanel();
	  	GridLayout lm1 = new GridLayout(3,2,10,10);
	  	pane.setLayout(lm1);
		pane.add(username);
	    pane.add(nName);
	    pane.add(password);
	    pane.add(pwort);
	    pane.add(login); 
	    pane.add(reg);
	  	setBackground(Color.green);
	  	add(pane);
	  	
	    
	  
	   }
	  public void actionPerformed(ActionEvent evt) {
	  	MainWindow fenster = new MainWindow();
	  	Object source = evt.getSource();
	  	if (source == login)
	  		fenster.init();
	  }
}

Nun die Klasse MainWindow

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.Applet;

public class MainWindow extends Applet {
	
	JLabel welcome = new JLabel("Herzlich willkommen Herr ...   ");
	JLabel tListe = new JLabel("Eine Übersicht der vorhanden quizzes");
	JLabel lLabel = new JLabel("");
	JButton nQuiz = new JButton("neues Quiz");
	JButton oQuiz = new JButton("Quiz bearbeiten");
	JButton statistik = new JButton("Statistik");
	JButton nOrdner = new JButton("neuer Ordner");
	JButton logout = new JButton("logout");
	JToolBar bar1 = new JToolBar();
	JToolBar bar2 = new JToolBar();
	JToolBar bar3 = new JToolBar();
	JToolBar bar4 = new JToolBar();
	List liste = new List(5);
	
		public void init() {
			setSize(450, 400);
			
			JPanel pane = new JPanel();
			bar1.add(welcome);
			bar1.add(logout);
			
			bar2.add(nQuiz);
			bar2.add(oQuiz);
			bar2.add(statistik);
			
			bar3.add(tListe);
			
			bar4.add(liste);
			bar4.add(nOrdner);
			
			GridLayout lm1 = new GridLayout(4,1);
		  	pane.setLayout(lm1);
		  	pane.add(bar1);
		  	pane.add(bar2);
		  	pane.add(bar3);
		  	pane.add(bar4);
		  	setBackground(Color.green);
		  	add(pane);
		  	
		}

	
}

Für eure Hilfe bedanke ich mich schon einmal im Voraus!!

Gruß Paule!![/code]
 

dotlens

Top Contributor
teste mal was gemacht wird wenn du login drückst....
mittels System.out.println("zwischenSchritt") kannst du dir alle paar zeilen ausgeben lassen, obe er es bis hierhin geschafft hat....
 

Paule

Aktives Mitglied
Hallo,

erst mal danke. Aber es kann ja nur an der actionPerformed-Methode was falsch sein, denn den Rest der Login-Klasse führt er ja aus. Muss ich evtl noch was importieren oder ne andere Methode des MainWindow aufrufen?

Ich hoffe mir kann jemand helfen, so langsam bin ich echt verzweifelt :(

Gruß Paule!!
 

dotlens

Top Contributor
du führst die init() methode gar nie aus!

du benötigst einen Konstruktor:
Code:
Login(){
    super();
    init();
}

und das gleiche auch in deiner anderen klasse
 

Paule

Aktives Mitglied
Hallo,

Code:
public class Login extends Applet implements ActionListener {   
	JLabel username = new JLabel("Nutzername: ");
	JLabel password = new JLabel("Passwort: ");
	JTextField nName = new JTextField(10);
	JPasswordField pwort = new JPasswordField(10);
	JButton login = new JButton("Login");
	JButton reg = new JButton("neu registrieren");
	MainWindow fenster = new MainWindow();
	
	
	
	  public void init() {
	  	setSize(400,200);
	  	login.addActionListener(this);
	  	
	  	
	  	JPanel pane = new JPanel();
	  	GridLayout lm1 = new GridLayout(3,2,10,10);
	  	pane.setLayout(lm1);
		pane.add(username);
	       pane.add(nName);
	       pane.add(password);
	       pane.add(pwort);
	       pane.add(login); 
	       pane.add(reg);
	       setBackground(Color.green);
	       add(pane);
	  	
	  	
	    }
	  
public void actionPerformed(ActionEvent evt) {
		MainWindow fenster = new MainWindow();
		fenster.init();
		
		
}

 public Login() {
	super();
	init();
}
	  
}

So? Oder wie meinst du das? Sorry bin noch ein blutiger Anfänger. Und irgendwie find ich das ganze ziemlich kompliziert.
Auf jeden Fall tut sich immer noch nichts, wenn ich auf den login-Button klicke.
Wäre nett wenn mir noch jemand nen Tipp geben könnte.

Gruß Paule!!!
 

L-ectron-X

Gesperrter Benutzer
Wir müssen noch eine grundsätzliche Frage klären: Was meinst Du mit Fenster?
Applets werden in einem Bereich des Browserfensters innerhalb einer Webseite ausgeführt. Wenn Du ein eigenständiges Fenster öffnen möchtest, musst Du diese Klasse von JFrame oder JDialog (bei AWT Frame bzw. Dialog) ableiten.
Wenn Du dagegen eine neue Webseite laden willst, musst Du etwas anders vorgehen.
 

Paule

Aktives Mitglied
Hi,

also das Applet soll in eine Lernumgebung im Internet eingebettet werden. Zu Anfang soll im Browser das Login erscheinen. Wenn ich dann alles ausgefüllt habe und auf "login" drücke, soll in dem Bereich, in dem vorher die Login-Klasse zu sehen war, der Inhalt der MainWindow-Klasse erscheinen. Ich möchte also kein neues Fenster öffnen.

Gruß Paule!!
 

L-ectron-X

Gesperrter Benutzer
Ich habe den Code etwas umgestellt. Das Ganze könnte so aussehen:
Code:
import javax.swing.*;

public class MyApplet extends JApplet {
   private JPanel activeView;
   
   public void init() {
      activeView = new Login(this);
      add(activeView);
   }
   
   public void changeView(JPanel p) {
      remove(activeView);
      activeView = p;
      getContentPane().add(activeView);
      validate();
   }
}
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Login extends JPanel implements ActionListener {
   private JLabel username;
   private JLabel password;
   private JTextField nName;
   private JPasswordField pwort;
   private JButton login;
   private JButton reg;
   private MyApplet owner;

   public Login(MyApplet owner) {
      this.owner = owner;

      setLayout(new GridLayout(5,2,10,10));
      setPreferredSize(new Dimension(400, 200));
      
      username = new JLabel("Nutzername: ");
      password = new JLabel("Passwort: ");
      nName = new JTextField(10);
      pwort = new JPasswordField(10);
      login = new JButton("Login");
      reg = new JButton("neu registrieren");
      
      login.addActionListener(this);
      
      add(username);
      add(nName);
      add(password);
      add(pwort);
      add(login);
      add(reg);
   }
      
   public void actionPerformed(ActionEvent evt) {
      if (login == (JButton)evt.getSource())
         owner.changeView(new MainWindow(owner));
   }
}
Code:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

public class MainWindow extends JPanel {

   private JLabel welcome;
   private JLabel tListe;
   private JLabel lLabel;
   private JButton nQuiz;
   private JButton oQuiz;
   private JButton statistik;
   private JButton nOrdner;
   private JButton logout;
   private JToolBar bar1;
   private JToolBar bar2;
   private JToolBar bar3;
   private JToolBar bar4;
   private JList liste;
   private MyApplet owner;

   public MainWindow(MyApplet owner) {
      this.owner = owner;
      setLayout(new GridLayout(4,1));
      
      welcome = new JLabel("Herzlich willkommen Herr ...   ");
      tListe = new JLabel("Eine Übersicht der vorhanden quizzes");
      lLabel = new JLabel("");
      nQuiz = new JButton("neues Quiz");
      oQuiz = new JButton("Quiz bearbeiten");
      JButton statistik = new JButton("Statistik");
      nOrdner = new JButton("neuer Ordner");
      logout = new JButton("logout");
      liste = new JList();
      
      bar1 = new JToolBar();
      bar2 = new JToolBar();
      bar3 = new JToolBar();
      bar4 = new JToolBar();
      
      bar1.add(welcome);
      bar1.add(logout);

      bar2.add(nQuiz);
      bar2.add(oQuiz);
      bar2.add(statistik);

      bar3.add(tListe);

      bar4.add(new JScrollPane(liste));
      bar4.add(nOrdner);

      add(bar1);
      add(bar2);
      add(bar3);
      add(bar4);
   }
}
Fehlende Listener etc. müssten ergänzt werden.
 

Paule

Aktives Mitglied
Hallo,

vielen vielen vielen ... Dank. Ich werd das gleich mal ausprobieren und auch versuchen zu verstehen. :wink:


Gruß Paule!!!
 

Paule

Aktives Mitglied
Hallo nochmal,

tja irgendwie funktioniert das nicht so ganz. Es wird zwar im Quellcode kein Fehler angezeigt (ich benutze Eclipse) aber wenn ich das Applet starten will, kommen ne Menge Fehlermeldungen.
Z.B: "java.lang.Error: Do not use Editor.add() use Editor.getContentPane().add() instead"
Hat es bei dir denn funktioniert?
Wäre nett wenn du mir da noch mal nen Tipp geben könntest.

Gruß Paule!!!
 

L-ectron-X

Gesperrter Benutzer
Schreibe einfach vor dem Methodenaufruf von add() in der init()-Methode noch getContentPane(). davor. Also genau so, wie es in meiner changeView()-Methode zu sehen ist. Ich arbeite mit Java 1.5. Da ist das nicht mehr nötig.
 

Paule

Aktives Mitglied
Moin,

ok da hätte ich auch selbst drauf kommen können. Also nochmal vielen Dank jetzt klappts.

Gruß Paule!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Applet aufruf einer anderen Klasse funktioniert nicht Tools - Maven, Gradle, Ant & mehr 7
C Applet Access Denied bei Function-Aufruf Tools - Maven, Gradle, Ant & mehr 11
C Aufruf eines Java Programms mittels ant MIT Parametern Tools - Maven, Gradle, Ant & mehr 2
C JApplet soll beim Aufruf nicht neustarten Tools - Maven, Gradle, Ant & mehr 3
J [JWS] Applikation per Shell-Aufruf mit Parametern Tools - Maven, Gradle, Ant & mehr 2
K JavaScript Aufruf klappt im iFrame nicht Tools - Maven, Gradle, Ant & mehr 2
M Applet startet beim zweiten Aufruf nicht mehr? Tools - Maven, Gradle, Ant & mehr 4
H Nutzung einer eigenen checkstyle Konfiguration in Jenkins - Grundsätzliches Tools - Maven, Gradle, Ant & mehr 2
D Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version Tools - Maven, Gradle, Ant & mehr 11
VfL_Freak Icon einer JNLP-Datei ändern ?? Tools - Maven, Gradle, Ant & mehr 2
N Ant [Android] Skript zum bauen einer .pak-Datei. Tools - Maven, Gradle, Ant & mehr 1
N Webservice Einbinden einer WSDL Tools - Maven, Gradle, Ant & mehr 11
S Webstart Webstart einer Applikation mit einer veralteten JNLP-Datei Tools - Maven, Gradle, Ant & mehr 6
G Maven Goals in einer phase ausführen Tools - Maven, Gradle, Ant & mehr 1
S Versionierung und automatischer FTP-Upload einer Webstart-Anwendung Tools - Maven, Gradle, Ant & mehr 3
S Problem bei Nutzung einer eigenen EJB in einem Servlet Tools - Maven, Gradle, Ant & mehr 2
A Auslesen einer .txt Datei auf Server mit Digest Authentifizierung Tools - Maven, Gradle, Ant & mehr 2
J JNLP und ein jar mit einer Access DB Tools - Maven, Gradle, Ant & mehr 4
G Ant in einer Batch Datei Tools - Maven, Gradle, Ant & mehr 6
P Problem beim Senden einer Datei Tools - Maven, Gradle, Ant & mehr 5
N Signiertes Applet verbindet sich nicht mit einer DB Tools - Maven, Gradle, Ant & mehr 6
J Daten von einer Webseite bearbeiten Tools - Maven, Gradle, Ant & mehr 4
A Applet aus einer Klasse starten 2 Tools - Maven, Gradle, Ant & mehr 8
A Applet aus einer Klasse starten Tools - Maven, Gradle, Ant & mehr 2
G mehrere Applets auf einer Seite Tools - Maven, Gradle, Ant & mehr 7
N Java Applet mit einer GUI erstellen Tools - Maven, Gradle, Ant & mehr 5
B Einer Grafik verschiedene Regionen zuweisen Tools - Maven, Gradle, Ant & mehr 3
R Array Werte einer JComboBox hinterlegen Tools - Maven, Gradle, Ant & mehr 2
T Mit Applet Bild von einer anderen HP darstellen Tools - Maven, Gradle, Ant & mehr 28
O Result einer Abfrage im Applet darstellen Tools - Maven, Gradle, Ant & mehr 11
F Erstellen einer Policy-Datei Tools - Maven, Gradle, Ant & mehr 8
S Ausgabe einer Methode schreibt in HTML Datei Tools - Maven, Gradle, Ant & mehr 8
K Applet mit einer Sinuskurven berechnung Tools - Maven, Gradle, Ant & mehr 2
G öffnen einer neuen seite mit word text Tools - Maven, Gradle, Ant & mehr 3
reibi Maven eclipse:eclipse - neuen sourcefolder angeben Tools - Maven, Gradle, Ant & mehr 26
E Neuen Process starten, Tools - Maven, Gradle, Ant & mehr 7
T Applet im neuen Fenster aufrufen Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben