Auf Thema antworten

Also Du brauchst in Java immer eine Referenz auf die jeweiligen Instanzen. Da ich keine Ahnung habe, was Du machen willst, kann ich jetzt den Klassen keine sinnvollen Namen geben. Daher nehme ich eine Klasse Controller, welche die GUI etwas steuert und eine Klasse DoSomething für Dein ausführen.


In der main Methode solltest Du also sowas haben wie

[CODE=java]Controller controller = new Controller();

controller.start();[/CODE]


Im Controller hast Du dann mehrere Instanzvariablen (Felder):

[CODE]JFrame frame;

JTextField input;[/CODE]


In Start wird das JFrame mit dem Inhalt erzeugt und die eigentliche Applikation gestartet. Das beschreibe ich hier jetzt nicht weiter.


Bei dem Button, den du in Start auch erzeugst, musst Du dann den Eventhandlern schreiben. Das kann dann so aussehen:

[CODE=java]JButton doSomethingButton = new JButton("Mach Was");

doSomethingButton.addActionListener(new ActionListener()

{

  public void actionPerformed(ActionEvent e)

  {

      DoSomething instance = new DoSomething();

      instance.doSomething(input.getText());

  }

});[/CODE]

Also wichtig ist, dass du die Instanz von DoSomething auch außerhalb erzeugen kannst, Du musst halt entscheiden, was du da brauchst.

Und in dem Beispiel bekommt doSomething direkt die Eingabe übermittelt. Es sollte vermieden werden, dass DoSomething die Implementation von Controller im Detail kennt. Aber es ginge auch folgender Konstrukt:


Der Konstruktor von DoSomething bekommt eine Instanz von Controller übergeben, welche dann gespeichert wird in einem Feld. In Controller wird dann die Instanz per new DoSomething(this); erzeugt.

Damit DoSomething nicht da JTextField kennen muss, bekommt Controller noch eine Funktion getInput() welche einfach ein return input.getText(); enthält.

Dann kann in der actionPerformed einfach doSomething() aufgerufen werden auf der Instanz von DoSomething ohne Parameter und in der Methode kann dann auf der Controller Instanz getInput aufgerufen werden.


War diese Beschreibung soweit verständlich? Auf dem Tablet ist es ansonsten schwer, ganzen Code zu schreiben, daher musste ich es mehr Beschreiben. Ich hoffe, dass es deutlich wurde, wie die jeweiligen Instanzen übergeben werden können.



Oben