Fehler beim Fenster - Erzeugen

NumeroUno

Grünschnabel
Servus,

ich habe einen Code gschrieben und es hat sich ein Fehler eingeschlichen, den
ich einfach nicht herausfinde. Hoffentlich habt ihr eine Tipp, was die Ursache
ist.

Hier der Code für das Haupt - Fenster :

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

public class Swing37 extends JFrame {
    JButton bu = new JButton("Close");

public static void main(String[] noArguments) {
    Swing37 swing37 = new Swing37();
    swing37.setBounds(200,200,300,250);
    swing37.setVisible(true);
}

public Swing37() {
    initGUI();
}

public void initGUI() {

getContentPane().setLayout(null);
setTitle("Ahnen 1.0");
bu.setBounds(20,20,80,25);
bu.addActionListener(new AcLis(this));
getContentPane().add(bu);

}

protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
        openDialog();
    }
}

public void anwendungSchliessen() {
    System.exit(0);
}

public void openDialog() {
    Swing37d d = new Swing37d(this,"Schließen",true);
   d.setVisible(true);
    }
}

class AcLis implements ActionListener {
    Swing37 obj;

public AcLis(Swing37 obj) {
    this.obj = obj;
}

public void actionPerformed(ActionEvent e) {
    obj.openDialog();
 }
}

Und der Code für das Neben - Fenster :

Code:
import java.awt.*;
import java.awt.Event.*;
import javax.swing.*;

public class Swing37d extends JDialog {
    Swing37 swing37;
    
    JLabel zeile1 = new JLabel("Wollen Sie die Anwendung," +
                              SwingConstants.CENTER);
    JLabel zeile2 = new JLabel("wirklich verlassen?," +
                              SwingConstants.CENTER);
    
    JButton jaButton = new JButton("Ja");
    JButton neinButton = new JButton("Nein");
    
    public Swing37d(Swing37 swing37, String titel, boolean modal) {
        super(swing37.titel, modal);
        this.swing37 = swing37;
        initGUI();
    }
    
    public Swing37d() {
        this(null,"", false);
    }
    
 void initGUI() {
     
     setBounds(swing37.getLocation().x + swing37.getSize().width/2 - 100, swing37.getLocation().y + swing37.getSize().height/2 - 75,200, 150);
     
     getContentPane().setLayout(null);
     zeile1.setBounds(10,80,120,12);
     zeile2.setBounds(10,80,120,12);
     jaButton.setBounds(20,75,70,25);
     jaButton.addActionListener(newDialogAction(this));
     neinButton.setBounds(110,75,70,25);
     neinButton.addActionListener(newDialogAction(this));

     getContentPane().add(zeile1);
     getContentPane().add(zeile2);
     getContentPane().add(jaButton);
     getContentPane().add(neinButton);
  }
 
 public void buttonPressed(ActionEvent e) {
     String cmd = e.getActionCommand();
     if("Ja".equals(cmd))
         swing37.anwendungSchliessen();
     else
         dispose();
  }    
}
 
class DialogAction implements ActionListener {
     Swing37d obj;
    
 
    public DialogAction(Swing37d obj) {
         this.obj = obj;
     }
  
     public void actionPerformed(ActionEvent e) {
         obj.buttonPressed(e);
     }

}
}

Danke für eure Hilfe.

NumeroUno
 
Zuletzt bearbeitet:
Und wir solle nun nicht nur rausfinden wo der Fehler ist sondern was er auch ist? Ein wenig mehr Informationen wo das Problem liegt wären schon gut ;)
 
Servus,

erstmal vielen Dank für deine Antwort. Ich habe nun wieder ein paar Änderungen gemacht und habe dieses Ergebnis :

Ich habe die MenuBar "Datei". Sie enthält die Elemente "Neu", Öffnen", "Speichern" & Verlassen.

Desweiteren habe ich einen Button, der die Öffnung eines neuen Fensters bewirkt, wenn man dieses drückt.

Nun zu meiner Frage. Das Programm ist soweit ganz in Ordnung. Nur möchte ich das
der Button und z.B. der Punkt "Neu" in der MenuBar eine neue Source Datei aufmachen,
damit ich keine zu große Unordnung im Quelltext habe.

Ich stelle vor, ich habe z.B. die Datei Listing3001.java und einer der Button verweist auf die Listing3002.java, wo ich dann übersichtlich das Fenster gestalte.

Ich hoffe, ihr wisst, was ich meine und könnt mir ein paar Tipps geben.

Hier der Code :


Code:
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;


public class Listing3001 extends Frame implements ActionListener
{

    

	public Listing3001(){

            
            super("Dialogtest");
    // addWindowListener(new WindowClosingAdapter(true));
     setLayout(new FlowLayout());
    
     
     
     
      Panel panel = new Panel();
     panel.setLayout(new FlowLayout(FlowLayout.CENTER));
     Button rechteck = new Button("Ende");
     rechteck.addActionListener(this);
     add(rechteck);
     setLocation(100,100);
     setSize(300,200);
     setVisible(true);
        
     panel.add(rechteck);
     add(panel, BorderLayout.SOUTH);
     pack();
     

            
		MenuBar	bar = new MenuBar();
		Menu menu = new	Menu("Datei");
		MenuItem item =	new MenuItem("Neu ...");
		MenuItem item2 = new MenuItem("Öffnen ...");
		MenuItem item3 = new MenuItem("Speichern ...");
		MenuItem item4 = new MenuItem("Verlassen");
                



		item.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent	arg0)

			{
				
                            JFrame fenster_R = new JFrame(); 
                            fenster_R.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
                            fenster_R.setTitle("Rechteck"); 
           // Setze die Groesse des Fensters 
                            fenster_R.setSize(450,450); 
        // Das Fenster soll kein automatisches Layout verwenden 
                            fenster_R.setLayout(null); 
      // Stelle das Fenster dar 
                            fenster_R.setVisible(true); 
          
			}
		});

		item2.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent	arg0)

			{
				System.exit(0);
			}
		});

		item3.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent	arg0)

			{
				System.exit(0);
			}

		});

		menu.add(item);
		menu.addSeparator();
		menu.add(item2);
		menu.add(item3);
		menu.addSeparator();
		menu.add(item4);
		bar.add(menu);
		this.setMenuBar(bar);


		this.setSize(200,300);
		this.setVisible(true);
	}

	  
public void actionPerformed(ActionEvent ereignis) { 
        String cmd = ereignis.getActionCommand(); 
        if (cmd.equals("Ende")) {

        Frame fenster_R = new Frame(); 
        // fenster_R.setDefaultCloseOperation( Frame.EXIT_ON_CLOSE ); 
        fenster_R.setTitle("Rechteck"); 
           // Setze die Groesse des Fensters 
        fenster_R.setSize(450,450); 
        // Das Fenster soll kein automatisches Layout verwenden 
        fenster_R.setLayout(null); 
      // Stelle das Fenster dar 
          fenster_R.setVisible(true); 

        } 
    
}

   
	public static void main(String[] args) {

	    Listing3001 aaa = new Listing3001();
	    aaa.setVisible(true);
        }

}


Vielen Dank für eure Hilfe. Ich bin schon seit einiger Zeit an diesem Code dran.

NumeroUno

PS : Ich bin noch Anfänger. Sollte einem überflüssiger Code auffallen, wäre ein kurzer
Hinweis nicht schlecht. Danke.
 
Zurück