Mit Klick auf Button ein neues Fenster erzeugen

Hallo,

ich bin ein Java-Anfänger und möchte etwas zum Üben programmieren. Ich habe ein Fenster programmiert, welches drei Buttons anzeigt: Quadrat, Kreis, Dreieck. Wenn man auf eines klickt, dann soll sich die jeweilige Form in einem neuen Fenster öffnen und daran bin ich gerade am verzweifeln. Hat jemand eine Idee, wie ich das lösen kann?
 
Java:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;


public class Frame extends JFrame {
  JLabel text1;
  JLabel text2;
  JButton button1;
  JButton button2;
  JButton button3;
  
  public Frame() {
    setVisible(true);
    setSize(500, 300);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setTitle("Formen");
    setResizable(false);
    setLayout(null);


    text1 = new JLabel("Wählen Sie eine Form!"); 
    text1.setBounds(120, 20, 500, 40); 
    Font schrift1 = text1.getFont().deriveFont(Font.BOLD + Font.PLAIN, 25); 
    text1.setFont(schrift1);
    add(text1);


    button1 = new JButton("Quadrat");
    button1.setBounds(100, 100, 100, 50);
    add(button1);


    button2 = new JButton("Kreis"); 
    button2.setBounds(200, 100, 100, 50); 
    add(button2);


    button3 = new JButton("Dreieck"); 
    button3.setBounds(300, 100, 100, 50); 
    add(button3);


    text2 = new JLabel("Die gewählte Form wird in einem neuen Fenster gezeigt."); 
    text2.setBounds(95, 180, 500, 40); 
    Font schrift2 = text2.getFont().deriveFont(Font.PLAIN, 12); 
    text2.setFont(schrift2);
    add(text2);
  }
  
}
 
Zuletzt bearbeitet:
Ich habe mir solche Tutorials schon durchgelesen und werde nicht schlauer dadurch. Entweder funktionierte es nicht so, wie es sollte oder es kamen Fehlermeldungen.
 
Dann versuch es nochmal zu implementieren, poste dann deinen Code und dann können wir schauen was falsch ist oder was nicht so funktioniert wie es soll. Es bringt dir ja jetzt kaum was wenn dir jemand dein Programm schreibt.
 
Ich habe es nun hinbekommen. Nun möchte ich das ganze ein wenig objektorientierter programmieren, aber bekomme immer einen Fehler ausgespuckt:

Compiliere C:\Users\User\Desktop\Formen.java mit Java-Compiler
C:\Users\User\Desktop\Button.java:18:5: error: cannot find symbol
addActionListener(new Action1());
^
symbol: method addActionListener(Action1)
location: class Button

C:\Users\User\Desktop\Button.java:24:5: error: cannot find symbol
addActionListener(new Action2());
^
symbol: method addActionListener(Action2)
location: class Button

C:\Users\User\Desktop\Button.java:30:5: error: cannot find symbol
addActionListener(new Action3());
^
symbol: method addActionListener(Action3)
location: class Button
3 errors

Java:
import javax.swing.*; 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;


public class Button extends JFrame {
  JButton button1;
  JButton button2;
  JButton button3;
  
  public Button() {
    //Der erste Button
    button1 = new JButton("Quadrat"); 
    button1.setBounds(100, 100, 100, 50);
    add(button1);
    addActionListener(new Action1());  
    
    //Der zweite Button
    button2 = new JButton("Kreis"); 
    button2.setBounds(200, 100, 100, 50); 
    add(button2);
    addActionListener(new Action2());
    
    //Der dritte Button
    button3 = new JButton("Dreieck");
    button3.setBounds(300, 100, 100, 50); 
    add(button3);
    addActionListener(new Action3());
  }
  
  static class Action1 implements ActionListener{
    public void actionPerformed(ActionEvent e){
      Quadrat f=new Quadrat();
    }
  }
  
  static class Action2 implements ActionListener{
    public void actionPerformed(ActionEvent e){
      Kreis f=new Kreis();
    }
  }
  
  static class Action3 implements ActionListener{
    public void actionPerformed(ActionEvent e){
      Dreieck f=new Dreieck();
    }
  }  
}
 
Zuletzt bearbeitet:
Nein...
Java:
button1.addActionListener(new Action1());
Ausserdem solltest du deine Klasse nicht Button nennen.
Von JFrame zu erben solltest du auch nicht wenn du es nicht explizit brauchst.
 

Zurück
Oben