JavaFX Zugriff auf Controller erlangen

delphiking1980

Bekanntes Mitglied
Hallo,

ich stehe vor einem "kleinen" Rätzel :

Ich habe eine GUI, bestehend aus einer MenuBar, einer TabPane sowie einer GridPane,
nun möchte ich gerne aus der MenuBar zugriff auf die TabPane erlangen jedoch habe alle 3 Komponenten einen Eigenen Controller.

Der MainController sieht folgendermaßen aus :

Java:
public class MainController implements Initializable {

	@FXML
	private MainMenuController mainMenu;

	@FXML
	private MainTextAreaController mainTextArea;

	@FXML
	private MainStatusBarController mainStatusBar;

	@FXML
	private Stage mainStage;

	@FXML
	private MenuBar menuBar;

	@FXML
	private Text cursorPosText;

	@FXML
	private void handleKeyInput(final InputEvent event) {
		if (event instanceof KeyEvent) {
			final KeyEvent keyEvent = (KeyEvent) event;
			if (keyEvent.isControlDown() && keyEvent.getCode() == KeyCode.A) {
			}
		}
	}

	@Override
	public void initialize(URL url, ResourceBundle resBdl) {
	}

}

aber wie komme ich jetzt von einem Controller auf den anderen ?

Hat jemand ein Stichwort für mich ?
Wollte jetzt nicht unbedingt ein anderes oder zusätzliches Framework verwenden. Das muss doch in JavaFX auch möglich sein.

Danke für eure Hilfe im Voraus.
 
In der Form: Gar nicht. Muss man aber eigentlich auch nicht.
Im Prinzip kannst du zwei Wege gehen: Entweder du schickst Nachrichten in deiner Anwendung hin und her (z.B. via PropertyChange Events oder einem selbstgeschriebenen kleinen Event-Handler (so hab ich das für meine ersten Anwendungen immer gehandhabt)), oder du hältst dich strikt an ein Model, auf dessen Änderungen deine Controller, b.z.w. die UIs, die durch die Controller verwaltet werden, reagieren.
So musst du nur zu der Zeit, wenn die Controller erstellt werden, dein Model injecten, oder es hat irgendwo eine statische Stelle, an der du es dir holen kannst.
Controller selbst sollten untereinander nicht reden.

Vielleicht schaust du auch mal in den Quellcode des SceneBuilder, wie die Oracle-Mitarbeiter das gelöst haben.

Ich selbst habe vor einer Weile auch mal eine ähnliche Frage gestellt (wie denn genau andere denn eine Architektur in JavaFX realisieren), aber ich war zu der Zeit wohl noch einer der wenigen der JavaFX-Leute hier, oder die Anderen wollten ihr Wissen nicht mit mir teilen... Wer weiss...
 
Nee, ist ok. Im Prinzip basiert alles ein wenig auf den selben Ideen... Nur die Umsetzung variiert.
Observables gibt es ja auch in JavaFX, daher meinte ich ja, dass du es auch mit einem zentralen Model erledigen kannst. Ohne externe Dependecies. Aber es ist gut zu wissen, das ich nicht der einzige bin, der den Gedanken einer solchen Lösung als annehmbar empfindet 🙂
 

Zurück
Oben