Java Button öffnet neues Fenster

katchy

Aktives Mitglied
Hallo Leute,
ich bin noch eine Anfängerin in der Java Programmierung und muss jetzt was programmieren und stehe da irgendwie auf dem Schlauch. Vllt könnt ihr ja helfen.

Ich habe eine Gui erstellt. Ich möchte dass wenn man auf einen Button geklickt wird sich ein neues Fenster öffnet. Den Button habe ich noch hinbekommen aber jetzt weiß ich nicht wie ich das hinbekomme dass sich da was öffnet wenn man darauf klickt.
Hier mal mein Code:
Java:
package gui_memorie;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class App_memorie_GUI extends JFrame {
	
	JButton taste = new JButton ("Spiel starten");
	
	class Neu implements ActionListener {
	    public void actionPerformed(ActionEvent e) {
	      System.out.println(); // Und gibt ihn aus
	  }
	};
	public App_memorie_GUI() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		setLayout(null); // Layout wird detailliert selbst gestaltet
		setBounds(10, 10, 500, 500); // Ort und Größe auf dem Bildschirm

		taste.setBounds(100, 50, 200, 200); // Relativer Ort und Größe im Fenster
		add(taste); // Button "taste" wird an das Fenster geheftet

		ActionListener newWindow = new Neu(); // Erzeuge einen Aufpasser
		taste.addActionListener(newWindow); // Verbinde ihn mit dem Button "taste"
		
		

		setVisible(true); // Mache das Fenster sichtbar
	}
}
Ist wahrscheinlich ganz einfach
Hoffe mir kann jmd helfen🙂

Mit lieben Grüßen,
Katharina
 
Zuletzt bearbeitet von einem Moderator:
Naja wie erzeugst du denn das Fenster auf dem der Button zu sehen ist?
Du musst doch nur einen JFrame mit Inhalt erstellen und diese auf sichtbar setzen 🙂

Anmerkungen zum Code:
Man sollte nicht von JFrame ableiten solange man nicht wirklich die Funktionalität der Klasse erweitert (nein Komponenten anordnern ist keine Erweiterung der Funktionalität).
Vermeide "_" in Klassennamen usw.
Das "null"-Layout ist am Anfang vielleicht einfach und funktioniert am Anfang noch ohne Probleme. Aber je komplexer die UIs werden um so mehr Probleme wirst du mit dem "null"-Layout bekommen.
Probiere jetzt schon den einen oder anderen Layout Manager aus.
 
Ja alles was gemacht werden soll sobald man auf den Button drückt muss vom ActionListener angestoßen werden.

Erzeuge in der actionPerformed Methode einfach ein neues Objekt deines gewünschten Fensters und zeige es an 🙂
 
Du öffnest ein neues Fenster mit diesem Befehl:
Java:
Klassenname.main(null);
Der Klassenname entspricht deiner Klasse, welche die main Methode beinhaltet.
Dadurch wird ein neues Fenster geöffnet. Man könnte davor noch das andere Fenster schließen.
Das müsste mit diesem Befehl gehen. Dabei bin ich mir aber nicht ganz sicher:
Java:
frame.dispose();

Und danach würde ich den anderen Befehl setzten. Dass würde dann also so aussehen:
Java:
frame.dispose();
Klassenname.main(null);
 
Du öffnest ein neues Fenster mit diesem Befehl:
Java:
Klassenname.main(null);
Der Klassenname entspricht deiner Klasse, welche die main Methode beinhaltet.
Dadurch wird ein neues Fenster geöffnet.

Du hast zwar recht das ein neues Fenster dadurch geöffnet wird, aber die "main" Methode selbst aufzurufen aus dem Code ist schlecht und sollte nicht gemacht werden!
Außerdem wurde keine "main" Methode gezeigt, sprich diese könnte noch anderen Code beinhalten welcher dann fälschlicherweise öfters ausgeführt wird.

Stattdessen einfach ein neues Objekt vom JFrame erzeugen (Layout und Komponenten hinzufügen) und mit "setVisible(true);" anzeigen lassen.

(Wie oben schon erwähnt, sollte man nicht von JFrame ableiten)


Man könnte davor noch das andere Fenster schließen.
Das müsste mit diesem Befehl gehen. Dabei bin ich mir aber nicht ganz sicher:
Java:
frame.dispose();

Ja "dispose()" ist die Methode um ein Fenster zu schließen.
 
Zuletzt bearbeitet:

Zurück
Oben