Wie kann man wert von event bekommen in javaFX

Liebe Leute,

ich möchte nur schauen wie man auf buttons ActionEvent funktioniert

muss ich String text = event.toString(); der String so bearbeiten dass ich von diese Ausgabe ```javafx.event.ActionEvent[source=Button@383d08db[styleClass=button]‘Button1’]

```import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class HalloWorld extends Application {

	
	@Override
	public void start(Stage primaryStage) throws Exception {
		Button btn = new Button();
		Button btn2 = new Button();
		btn.setText("Button1");
		btn2.setText("Button2");
		
		GridPane grid = new GridPane();
		
				
		btn.setOnAction(new ButtonHandler());
		btn2.setOnAction(new ButtonHandler());
		

		grid.add(btn,0,1);
		grid.add(btn2,1,1);
		
		Scene scene = new Scene(grid,300,200);
		
		primaryStage.setTitle("Hallo World");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	

	class ButtonHandler implements EventHandler<ActionEvent> {

		
		@Override
		public void handle(ActionEvent event) {
			
			System.out.println(event);
			String text = event.toString();
			if(text.equals("Button1")){
				System.out.println("Say hallo to World");
			}if(text.equals("Button2")){
				System.out.println("Say bye to World");
			}
		}
		
	}
	
	
	public static void main(String[] args) {
		launch(args);
		
	}

	
}```


in swing ging mit getActionCommand aber in FX habe ich passende Methode nicht gefunden

```public void actionPerformed(ActionEvent e) {
			String s;
			System.out.println(e.getActionCommand());
			s = e.getActionCommand();

			if (s.equals("OK")) {

				System.out.println("Test---------");

			}

		}```

~~Ich bin verwirrt: ist das [JAPI]ActionEvent[/JAPI] aus Codeblock 1 nicht das selbe Interface wie in Codeblock 2"
~~
Ich würde es über die Source versuchen.
javafx.event.ActionEvent
erbt getSource() aus dem EventObject

bye
TT

ja aber event.getSource() gibt mir Button@383d08db[styleClass=button]‘Button1’, soll ich String text = event.getSource().toString() machen und dann aus dem String wert Button wert auslesen?

[quote=Timothy_Truckle;117973]Ich bin verwirrt: ist das ActionEvent aus Codeblock 1 nicht das selbe Interface wie in Codeblock 2"[/quote] codeblock2 ist wie das in swing funktioniert und codeblock1 in javaFX. In codeblock2 funktioniert sehr einfach und weiß du wie das in codeblock1 funktionieren konnte?

[quote=anni80]soll ich String text = event.getSource().toString() machen und dann aus dem String wert Button wert auslesen?[/quote]Nein,
Aber getSource() liefert mit an Sicherheit grenzender Wahrscheinlichkeit einen Nachfahren von javax.swing.AbstractButton und die Classe kennt (oh Wunder) https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractButton.html#getActionCommand--

bye
TT

Danke . Jetzt funktioniert

	Button btn;
	Button btn2;
	
	@Override
	public void start(Stage primaryStage) throws Exception {
		 btn = new Button();
	     btn2 = new Button();
		btn.setText("Button1");
		btn2.setText("Button2");
		
		GridPane grid = new GridPane();
		
				
		btn.setOnAction(new ButtonHandler());
		btn2.setOnAction(new ButtonHandler());
		

		grid.add(btn,0,1);
		grid.add(btn2,1,1);
		
		Scene scene = new Scene(grid,300,200);
		
		primaryStage.setTitle("Hallo World");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	

	class ButtonHandler implements EventHandler<ActionEvent> {

		
		@Override
		public void handle(ActionEvent event) {
			
			String text = event.toString();
			if(event.getSource() == btn){
				System.out.println("Say hallo to World");
			}if(event.getSource() == btn2){
				System.out.println("Say bye to World");
			}
		}
		
	}
	
	
	public static void main(String[] args) {
		launch(args);
		
	}

	
}

Du kannst das noch etwas “Swingnäher” machen indem du deinen Buttons über setUserData ein “ActionCommand” setzen bzw alles was du willst als Object. und dann in der “handle” methode das gespeichtere wieder benutzen.

Dann müsstest du die Buttons nicht als Variable speichern.

Mfg
Clayn

ich habe heute mit FXML gelöst