Dialog schließt erst nach 2x Klicken auf Schließen

anny96

Mitglied
Hallo 🙂
Ich muss im Informatikunterricht ein eigenes Programm erstellen und habe mich für ein Gehörbildungsprogramm entschieden. Wir haben keine richtige Einführung in Java bekommen, ich bin also totaler Anfänger.
Ich habe jetzt schon eine Startseite, auf der man den Trainingsschwerpunkt "Intervalle" wählen kann. Dann öffnet sich ein Dialog, der sich aber erst nach dem 2. Klick auf das Kreuz oben in der Ecke schließt. Jetzt habe ich einen Button erstellt, aber auch mit diesem lässt sich der Dialog erst beim 2. Klick schließen. Was habe ich falsch gemacht?

Startseite

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 04.01.2016
  * @author
  */

public class Startseite extends JFrame {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  // Ende Attribute

  public Startseite(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 350;
    int frameHeight = 500;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jLabel1.setBounds(48, 24, 251, 41);
    jLabel1.setText("Willkommen bei Quick Ear");
    jLabel1.setFont(new Font("Dialog", Font.BOLD, 18));
    cp.add(jLabel1);
    cp.setBackground(new Color(0xFFC800));
    jLabel2.setBounds(64, 72, 215, 33);
    jLabel2.setText("Wähle deinen Trainingsschwerpunkt:");
    cp.add(jLabel2);
    jButton1.setBounds(56, 128, 233, 57);
    jButton1.setText("Intervalle");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton1_ActionPerformed(evt);
      }
    });
    jButton1.setBackground(new Color(0xEEEEEE));
    cp.add(jButton1);
    jButton2.setBounds(56, 216, 233, 57);
    jButton2.setText("Dreiklänge");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    jButton3.setBounds(56, 304, 233, 57);
    jButton3.setText("Tonleitern");
    jButton3.setMargin(new Insets(2, 2, 2, 2));
    jButton3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton3_ActionPerformed(evt);
      }
    });
    cp.add(jButton3);
    // Ende Komponenten

    setVisible(true);
  } // end of public Startseite

  // Anfang Methoden

  public static void main(String[] args) {
    new Startseite("Startseite");
  } // end of main

  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    Intervalle Dialog = new Intervalle(this,"Intervalle",true);
    Dialog.setVisible(true);
  } // end of jButton1_ActionPerformed

  public void jButton2_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    Dreiklaenge Dialog = new Dreiklaenge(this,"Dreiklaenge",true);
    Dialog.setVisible(true);
  } // end of jButton2_ActionPerformed

  public void jButton3_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    Tonleitern Dialog = new Tonleitern(this,"Tonleitern",true);
    Dialog.setVisible(true);
  } // end of jButton3_ActionPerformed

  // Ende Methoden
} // end of class Startseite



Dialog für Intervalle

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 04.01.2016
  * @author
  */

public class Intervalle extends JDialog {
  // Anfang Attribute
  private JButton jButton1 = new JButton();
  private JTextField jTextField1 = new JTextField();
  private JTextArea jTextArea1 = new JTextArea("");
    private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
  private JButton jButton2 = new JButton();
  // Ende Attribute

  public Intervalle(JFrame owner, String title, boolean modal) {
    // Dialog-Initialisierung
    super(owner, title, modal);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 350;
    int frameHeight = 500;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    cp.setBackground(new Color(0xFFC800));
    jButton1.setBounds(104, 88, 137, 129);
    jButton1.setText("Hörbeispiel");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jTextField1.setBounds(80, 272, 177, 33);
    cp.add(jTextField1);
    jTextArea1ScrollPane.setBounds(40, 328, 257, 41);
    jTextArea1.setText("Gib die Abkürzung des gehörten Intervalls, \nzum Beispiel g3 für eine große Terz, ein.");
    cp.add(jTextArea1ScrollPane);
    jButton2.setBounds(80, 408, 185, 33);
    jButton2.setText("Training beenden");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  } // end of public Intervalle

  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed

  public void jButton2_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
       this.dispose();
  } // end of jButton2_ActionPerformed

  // Ende Methoden

} // end of class Intervalle


LG Anny
 
Zuletzt bearbeitet von einem Moderator:
Hallo Anny,

lass mal das setVisible(true) weg in deiner Klasse Intervalle.
Sollte dann wie gewünscht funktionieren.

Java:
 setResizable(false);
 setVisible(true); // dieses löschen bzw. auskommentieren !!
  } // end of public Intervalle

Lg Tom
 

Zurück
Oben