Fenster/Frame schließen

Status
Nicht offen für weitere Antworten.

ghost

Bekanntes Mitglied
Ich hab ein Hauptfenster aus dem ich ein 2. Fenster aus ( JFrame test = new test()😉 aufbaue. Nun habe ich in dem 2. Fenster einen Schließen - Button welcher, wenn er gedrückt wird, eben jenes 2. Fenster schließen soll, das Hauptfenster soll unberührt bleiben. Was muß ich da im ActionListener angeben ( bei test.dispose(); kommt die Fehlermeldung, das ich nichts non-static im static machen kann )?
Code:
ActionListener AL = new ActionListener(){
public void actionPeformed(ActionEvent e){
test.dispose(); <-- geht nicht
}
};
 
Zeig mal'n bißchen mehr Code... liegt der gezeigte Bereich u.U. innerhalb der Main-Methode??
 
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;

public class Befehl extends JFrame{
	public Befehl(){
		super("Suche nach Datensätzen");
		
		JPanel pane = new JPanel();
		pane.setLayout(new GridBagLayout());
		
		JLabel labe = new JLabel();
		labe.setOpaque(true);
		labe.setFont(new Font("Helvetica", Font.BOLD, 20));
		labe.setText("Datensatz - Suche");
		pane.add(labe, new GridBagConstraints(0,0,1,1,1.0,0.1,
			GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));
			
		JLabel labe2 = new JLabel();
		labe2.setOpaque(true);
		labe2.setFont(new Font("Helvetica", Font.BOLD,14));
		labe2.setText("zu durchsuchende Datenbank: ");
		pane.add(labe2, new GridBagConstraints(0,1,1,1,1.0,0.1,
			GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 1,1));
			
		JLabel labe3 = new JLabel();
		labe3.setOpaque(true);
		labe3.setFont(new Font("Helvetica", Font.BOLD,14));
		labe3.setText("Suchbegriff: ");
		pane.add(labe3, new GridBagConstraints(0,2,1,1,1.0,0.1,
			GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 1,1));
			
		JTextArea ausg = new JTextArea();
		ausg.setFont(new Font("Helvetica", Font.PLAIN, 14));
		ausg.setEditable(false);
		JScrollPane scro = new JScrollPane(ausg);
		pane.add(scro, new GridBagConstraints(3,1,6,3,1.0,0.1,
			GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));
			
		JTextField tf1 = new JTextField();
		tf1.setFont(new Font("Helvetica", Font.PLAIN, 14));
		pane.add(tf1, new GridBagConstraints(1,1,1,1,1.0,0.1,
			GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));
			
		JTextField tf2 = new JTextField();
		tf2.setFont(new Font("Helvetica", Font.PLAIN, 14));
		pane.add(tf2, new GridBagConstraints(1,2,1,1,1.0,0.1,
			GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));
			
		JButton bu1 = new JButton();
		bu1.setText("Suchen");
		bu1.setBackground(Color.green);
		bu1.addActionListener(A1);
		pane.add(bu1, new GridBagConstraints(0,3,1,1,1.0,0.1,
			GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));
			
		JButton bu2 = new JButton();
		bu2.setText("Schließen");
		bu2.setBackground(Color.red);
		bu2.addActionListener(A2);
		pane.add(bu2, new GridBagConstraints(1,3,1,1,1.0,0.1,
			GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));
				
		this.getContentPane().setLayout(new GridBagLayout());
			this.getContentPane().add(pane, new GridBagConstraints(0,0,1,1,1.0,1.0, 
				GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));
	}
		ActionListener A1 = new ActionListener(){
			public void actionPerformed(ActionEvent e){
				
			}
		};
		ActionListener A2 = new ActionListener(){
			public void actionPerformed(ActionEvent e){
			
				
			}
		};
}
 
Der Code funzt ja, da ich hier das Befehl.dispose(); nicht drin hab, sondern nur den leeren ActionListener, da ich nicht weiß was ich machen soll, damit das Fenster geschlossen wird...
 
Klar, aber der rest des Prog funzt ja einwandfrei. Mein Problem ist nur, das ich mit dem oben geposteten Teil-Prog. ein Frame öffne und dieses mit einem Button/ActionListener wieder schließen möchte. Mein Problem ist nun, was muss ich im ActionListener angeben, damit das Fenster ( aber nur dieses, nicht das Hauptprog. ) geschlossen wird...
 
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;

public class Befehl extends JFrame implements ActionListener {
   JButton bu1, bu2;
   public Befehl(){
      super("Suche nach Datensätzen");

      JPanel pane = new JPanel();
      pane.setLayout(new GridBagLayout());

      JLabel labe = new JLabel();
      labe.setOpaque(true);
      labe.setFont(new Font("Helvetica", Font.BOLD, 20));
      labe.setText("Datensatz - Suche");
      pane.add(labe, new GridBagConstraints(0,0,1,1,1.0,0.1,
         GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

      JLabel labe2 = new JLabel();
      labe2.setOpaque(true);
      labe2.setFont(new Font("Helvetica", Font.BOLD,14));
      labe2.setText("zu durchsuchende Datenbank: ");
      pane.add(labe2, new GridBagConstraints(0,1,1,1,1.0,0.1,
         GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 1,1));

      JLabel labe3 = new JLabel();
      labe3.setOpaque(true);
      labe3.setFont(new Font("Helvetica", Font.BOLD,14));
      labe3.setText("Suchbegriff: ");
      pane.add(labe3, new GridBagConstraints(0,2,1,1,1.0,0.1,
         GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 1,1));

      JTextArea ausg = new JTextArea();
      ausg.setFont(new Font("Helvetica", Font.PLAIN, 14));
      ausg.setEditable(false);
      JScrollPane scro = new JScrollPane(ausg);
      pane.add(scro, new GridBagConstraints(3,1,6,3,1.0,0.1,
         GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));

      JTextField tf1 = new JTextField();
      tf1.setFont(new Font("Helvetica", Font.PLAIN, 14));
      pane.add(tf1, new GridBagConstraints(1,1,1,1,1.0,0.1,
         GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

      JTextField tf2 = new JTextField();
      tf2.setFont(new Font("Helvetica", Font.PLAIN, 14));
      pane.add(tf2, new GridBagConstraints(1,2,1,1,1.0,0.1,
         GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

      bu1 = new JButton();
      bu1.setText("Suchen");
      bu1.setBackground(Color.green);
      bu1.addActionListener(this);
      pane.add(bu1, new GridBagConstraints(0,3,1,1,1.0,0.1,
         GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

      bu2 = new JButton();
      bu2.setText("Schließen");
      bu2.setBackground(Color.red);
      bu2.addActionListener(this);
      pane.add(bu2, new GridBagConstraints(1,3,1,1,1.0,0.1,
         GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

      this.getContentPane().setLayout(new GridBagLayout());
         this.getContentPane().add(pane, new GridBagConstraints(0,0,1,1,1.0,1.0,
            GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));
            this.pack();
            this.setVisible(true);
   }
   public void actionPerformed(ActionEvent e){
     Object obj = e.getSource();
     if(obj == bu1){

     }
     if(obj == bu2) {
        this.dispose();
     }
   }
   public static void main(String[] args) {
      new Befehl();
   }
}
 
Ich habs jetzt ausprobiert ( mit deiner main und meiner, s.u. ) jedoch krieg ich bei beiden ne null pointer exception..
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;



public class Main{
	public static void main (String [] args){
	
		ActionListener L1 = new ActionListener(){
		public void actionPerformed(ActionEvent e){
			JFrame Befehl = new Befehl();
			//Befehl.setSize(600,400);
			//Befehl.setVisible(true);
			}
		};
		ActionListener ALInfo = new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JFrame Inf = new Info();
				Inf.setSize(250,200);				
				Inf.setVisible(true);
				
			}
		};
		ActionListener ALend = new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.exit(0);
			}
		};

	JFrame fenster = new Komplett();
	fenster.setSize(700,280);
	
	JMenuBar mbar = new JMenuBar();
	JMenu prog = new JMenu("Programm");
	mbar.add(prog);
	fenster.setJMenuBar(mbar);
	JMenuItem info = new JMenuItem("Info");
	prog.add(info);
	info.addActionListener(ALInfo);
	JMenuItem end = new JMenuItem("Beenden");
	prog.add(end);
	end.addActionListener(ALend);
	JMenu sql = new JMenu("MySQL");
	mbar.add(sql);
	JMenuItem befehl = new JMenuItem("Einfache Suche");
	sql.add(befehl);
	befehl.addActionListener(L1);
	JMenu help = new JMenu("Hilfe");
	mbar.add(help);
	JMenuItem hilfe = new JMenuItem("Hilfe");
	help.add(hilfe);
	//hilfe.addActionListener(Alhilfe);
	
	
	WindowListener l = new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		};
	fenster.addWindowListener(l);
	//fenster.pack();
	fenster.setVisible(true);



}
}
 
Die Zeile kann ich dir leider nicht sagen, da es ne lange Fehlermeldung ist und um dos - Fenster so durchrauscht und leider kann ich bei meinem dos nicht hochscrollen. Sorry...
 
Wie, du kannst bei deinem DOS nicht hochscrollen? Was hast du für ein OS? Drück gleich zu beginn mal die Pause-Taste, dann sollte das Bild bis zum nächsten Tastendruck stehenbleiben
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben