Hallo,
ich bin ziemlicher Java- und OOP-Anfänger und habe ein Problem damit, auf eine Variable bzw. Methode in einer anderen Klasse zuzugreifen.
Folgendes möchte ich gern erreichen:
In meiner Main-Methode erstelle ich ein Fenster, im Beispiel nur mit einem Textfeld. Das Fenster wird vom Konstruktor meiner "Gui"-Klasse erstellt. Außerdem gibt es in der Gui-Klasse eine Methode, um den Inhalt des Textfeldes zu liefern (ab Zeile 43). In der Main-Routine kann ich problemlos auf die Methode, die mir den Inhalt des Textfeldes liefert, zugreifen (Zeile 20). Ich habe aber außerdem definiert, dass beim Schließen des Fensters erstmal nichts passiert (Zeile 17). Dafür habe ich eine Klasse (aus einem Codebeispiel im Internet), die dann anspringt, um vor dem Beenden noch Dinge zu erledigen (ab Zeile 24). Und an dieser Stelle kriege ich es nicht hin, den Inhalt des Textfeldes zu erhalten (Zeile 28).
Was muss ich tun, damit Zeile 28 auch funktioniert?
Schon mal vielen Dank für alle Denkanstöße!
Lauffähiges (bis auf die Problemstelle) Mini-Beispiel:
ich bin ziemlicher Java- und OOP-Anfänger und habe ein Problem damit, auf eine Variable bzw. Methode in einer anderen Klasse zuzugreifen.
Folgendes möchte ich gern erreichen:
In meiner Main-Methode erstelle ich ein Fenster, im Beispiel nur mit einem Textfeld. Das Fenster wird vom Konstruktor meiner "Gui"-Klasse erstellt. Außerdem gibt es in der Gui-Klasse eine Methode, um den Inhalt des Textfeldes zu liefern (ab Zeile 43). In der Main-Routine kann ich problemlos auf die Methode, die mir den Inhalt des Textfeldes liefert, zugreifen (Zeile 20). Ich habe aber außerdem definiert, dass beim Schließen des Fensters erstmal nichts passiert (Zeile 17). Dafür habe ich eine Klasse (aus einem Codebeispiel im Internet), die dann anspringt, um vor dem Beenden noch Dinge zu erledigen (ab Zeile 24). Und an dieser Stelle kriege ich es nicht hin, den Inhalt des Textfeldes zu erhalten (Zeile 28).
Was muss ich tun, damit Zeile 28 auch funktioniert?
Schon mal vielen Dank für alle Denkanstöße!
Lauffähiges (bis auf die Problemstelle) Mini-Beispiel:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class test3
{
public static void main( String[] args)
{
Gui window = new Gui();
window.setSize(100,100);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
window.addWindowListener(new SaveOnCloseWindowListener());
System.out.println(window.getFeld1()); //hier funktioniert es
}
}
class SaveOnCloseWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.out.println(window.getFeld1()); //warum geht das nicht?
System.exit(0);
}
}
class Gui extends JFrame implements ActionListener
{
public JTextField feld1;
private static final long serialVersionUID = 1L;
public Gui() //Konstruktor für GUI
{
feld1 = new JTextField("Inhalt des Feldes");
this.getContentPane().add(feld1);
}
public String getFeld1()
{
String aaa=feld1.getText();
return aaa;
}
public void actionPerformed(ActionEvent klick)
{//hier passieren noch Dinge
}
}