Although we have a very feature rich FXML-Editor with a live preview many users are using SceneBuilder to define their UIs. In case you have an FXML you want the possibility to generate a controller who references:
- elements marked with
fx:id
as fields - event handler properties like
onAction="#login"
as methods
e(fx)clipse 1.1.0 added a first version of a wizard who allows you to generate the controller from it (no merging yet!)
Let’s assume you have the following FXML-File
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.control.Button?> <BorderPane xmlns:fx="http://javafx.com/fxml/1"> <Button fx:id="loginbutton" onAction="#login"></Button> </BorderPane>
You can bring up the context menu on the editor and inside the Source-Menu you’ll find the “Generate Controller”-Action as showing in the screenshot
It will bring up a dialog like this:
and if you finish it a java class like this gets generated
package application; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.event.ActionEvent; public class SampleController { @FXML private Button loginbutton; // Event Listener on Button[#loginbutton].onAction @FXML public void login(ActionEvent event) { // TODO Autogenerated } }
Pingback: e(fx)clipse 1.1.0 released | Tomsondev Blog
When I do this, it generates the controller class, but I notice that public void login(ActionEvent event) {…, it generates public void login(? event) {…
Also, it does “import ?;” Do you know why it might be using a question mark instead of ActionEvent?
No but that sounds like a bug – please file one at https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Efxclipse