Guten Tag,
und zwar möchte ich gerne per ActionEvent ein neues Fenster öffnen.
Ich habe hierbei zwei *.java Dateien.
Von der einen möchte ich die andere Form öffnen.
Habe es bereits versucht:
{
public void actionPerformed(ActionEvent event)
{
About test = new About();
test.setVisible(true)
}```
Die zweite Java Datei heißt About.java.
Und die will ich öffnen.
Nur funktioniert das nicht, ich hoffe ihr könnt mir da helfen.
wird die action performed methode aufgefrufen? kann man mit z.B. einer Konsolenausgabe kontrollieren (die man nachdem man mit dem testen Fertig ist auch wieder entfernen kann)
Abgesehen davon, dass man nicht von JFrame erben sollte, klappt das nciht, weil du nciht den Konstruktor aufrufst denn du hier geschrieben hast, weil du new About(); hast und nicht new About(“title”);
Das du deine Klasse hast, in der ein JFrame ist, das du so zusammenbaust wie du das brauchst. Daher hat deine Klasse dann nicht alle methoden von JFrame öffentlich.
Für einen About-Dialog kann man [japi]JOptionPane[/japi] benutzen, oder ein [japi]JPanel[/japi] mit Inhalt füllen, welches man dann in eine Instanz eines [japi]JDialog[/japi]s hinzufügt.
Eine Klasse schreiben, in der du einen JDialog instanziierst und nicht von ihm erbst.
Diese Klasse kann von JPanel erben oder aber auch nur ein JPanel instanziieren, auf welchem Du dann deine Inhalte platzierst.
Das Panel fügst du dann der JDialog-Instanz hinzu, welche du modal schaltest, legst die Standard-Schließen-Operation fest und machst den Dialog anschließen sichtbar.
Von deinem JFrame aus (Hauptfenster) kannst du üner deinen Menüeintrag für About dann eine Instanz der Klasse erzeugen.
Naja wie schon von L-ectron geschrieben, falls der unterschied nicht klar ist:
Du machst:
public class MeinFrame extends JFrame
public MeinFrame()
{
super("test");
this.add(...);//auch wenn du das this nciht schreibst wendest du jedes mal methoden der Superklasse an
//....
}
Wenn man nicht erbt macht man das so:
public class MeinFrame
{
JFrame frame= new JFrame("test");
public MeinFrame()
{
frame.add(...);
//...
frame.setVi...
}