Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Methode zum schliessen eines frames - nicht durch windows X
gibt es eine Methode, welche ich aufrufen kann, die mir meinen Frame schließt? DISPOSE_ON_CLOSE geht nur für das schliessen rechts oben nehme ich an. Ich will diese aber per Methode ausführen...Irgendwie sowas wie ein Destructor vlt???
//Frame instanziieren
JFrame f = new JFrame("Eingabe");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
f.setResizable(false);
f.setSize(800,600);
//AktionListener instanziieren
al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("Eintragen"))
{
eingabe ein = new eingabe();
ein.eingabefunktion();
};
if(e.getActionCommand().equals("Reset"))
{
f.dispose;
eingabefenster ein = new eingabefenster();
ein.eingabe();
//Jetzt kennt er hier wahrscheinlich mein f nicht vermute ich...was machen?
};
}
}
Wenn das die gleiche Methode ist kannst du f final machen, wenn nicht, musst du es eben als Instanzvariable speichern, oder ne richtige (also net anonyme mein ich) Klasse aus dem Listener machen und der im Konstruktor übergeben oder etwas ähnliches.
public class eingabefenster
{
public static ActionListener al;
public static ActionListener alRadio;
public static ItemListener il;
public static void eingabe()
{
JFrame f = new JFrame("Eingabe");
betrag = new JTextField();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
f.setResizable(false);
f.setSize(800,600);
al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("Eintragen"))
{
eingabe ein = new eingabe();
ein.eingabefunktion();
};
if(e.getActionCommand().equals("Reset"))
{
f.dispose;
//hier hebts
eingabefenster ein = new eingabefenster();
ein.eingabe();
};
}
};
Wahscheinlich steh cih auf em schlauch..aber wo soll ich das nun ändern?
"final JFrame f". Denn du hast hier eine anonyme Klasse. Diese anonyme Klasse weiss aber eigentlich nicht, was so um sie herum geschieht, insbesondere kennt sie das Frame nicht. Wenn du das Frame als "final" deklarierst, kann es von dem anonymen Klasse entdeckt werden.
Hallo ich habe das gleiche Problem und habe dazu die hier angegebenen Posts gelesen/probiert. Leider schließt sich das Fenster nicht und es kommt auch keine Fehlermeldung
Code:
final JFrame f = new JFrame;
Listener{
f.dispose();
Klasse test = new Klasse();
test.funktion();
}
............
Machst du auch das gleiche Fenser sichtbar? Ein Tipp: wenn du mehr als ein "new JFrame" im Code hast, verwechselst du mit 90% Wahrscheinlichkeit irgendwo die Variablen :wink: