志在指尖
用双手敲打未来

实现FXML对应的控制器

前面介绍了如何通过fxml文件编排界面布局,但是光有静态界面底子没法处理事务,有必要别的书写事务逻辑的代码,方能呼应各按钮的单击事情,并将事务成果即使出现到界面上。明显,fxml内部写不了Java代码,一起进口程序现已把控件都保管给了fxml文件,也无法在Application代码中干涉控件的操作。既然整个界面都托付给了fxml,那么解铃还须系铃人,只能且有必要由fxml指定后续的逻辑控制器。具体做法是在fxml的根节点中添加特点“fx:controller”,通过该特点设置当时界面的控制器途径。比方之前的登录布局文件login_with_flow.fxml,它的根节点是流式窗格FlowPane,所以就给FlowPane节点补充“fx:controller”的取值,具体的标签比如见下:java
xmlns:fx=”http://javafx.com/fxml”alignment=”center”hgap=”5″vgap=”5″>
由以上的FlowPane标签可知,它指定的控制器途径为“com.javafx.fxml.LoginController”,这个LoginController类正是login_with_flow.fxml对应的控制器代码。作为FXML专属的搭档,控制器也要符合一定的格局标准,首先它有必要实现了接口Initializable,并重写该接口界说的initialize方法,这个方法顾名思义会在界面初始化之时调用。其次,控制器内部需要声明FXML文件界说好的控件编号,这样才能通过控件编号操作每个控件目标。下面便是一个控制器范本的代码示例:
//界面控制器有必要实现自接口Initializable
publicclassLoginControllerimplementsInitializable{
@FXML
private控件类型控件编号;//其中控件类型为JavaFX的控件类名,控件编号取自fxml文件中的fx:id
@Override
publicvoidinitialize(URLlocation,ResourceBundleresources){//界面翻开后的初始化操作
//可在此给各控件设置单击事情或许选中事情,也可设置控件上的文本字体及其巨细
}
}
仍以前述的登录窗口为例,它的布局文件名叫login_with_flow.fxml,一起fxml文件设定了界面对应的控制器叫做LoginController。注意到登录窗口具有两个单选按钮和一个登录按钮,这三个按钮都应当触发单击或许选中事情,所以在控制器的代码中别离声明几个待操作的控件目标,目标称号与fxml中的fx:id保持一致。然后重写控制器的initialize方法,在该方法中各自调用三个按钮的setOnAction方法,用以注册单击或选中按钮后的触发事情。根据以上阐明编写登录窗口的控制器代码示例如下:
//登录窗口的界面控制器
publicclassLoginControllerimplementsInitializable{
@FXML
privateRadioButtonrbPassword;//暗码登录对应的单选按钮
@FXML
privateRadioButtonrbVerifycode;//验证码登录对应的单选按钮
@FXML
privateLabellabelUser;//用户名标签
@FXML
privateTextFieldfieldUser;//用户名输入框
@FXML
privateLabellabelPassword;//暗码标签
@FXML
privatePasswordFieldfieldPassword;//暗码输入框
@FXML
privateButtonbtnLogin;//登录按钮
@FXML
privateLabellabelLoginResult;//登录成果标签
@Override
publicvoidinitialize(URLlocation,ResourceBundleresources){//界面翻开后的初始化操作
rbPassword.setOnAction(e->{//选中“暗码登录”单选按钮后触发的事情
labelUser.setText(“用户名:”);
labelPassword.setText(“密码:”);
});
rbVerifycode.setOnAction(e->{//选中“验证码登录”单选按钮后触发的事情
labelUser.setText(“手机号:”);
labelPassword.setText(“验证码:”);
});
//
btnLogin.setOnAction(e->{//单击“登录”按钮后触发的事情
Stringresult=String.format(“您输入的用户名为%s,暗码为%s”,
fieldUser.getText(),fieldPassword.getText());
labelLoginResult.setText(result);//在登录成果标签上显示登录信息
});
}
}
由上面代码可见,这个控制器的处理逻辑很简单,选中按钮后只是给文本标签设置指定文字罢了,当然这样也便利调查控件的操作成果。
回到登录窗口的进口代码LoginMain,运行测试程序弹出如下图所示的登录界面。
由图示可见登录窗口默许选中“暗码登录”,接着单击右边的“验证码登录”按钮,发现下方的用户名标签变成了“手机号:”,暗码标签变成了“验证码:”,阐明“验证码登录”按钮的选中事情被正常触发。然后别离在用户名输入框与暗码输入框中填入用户名和暗码,再单击下面的登录按钮,此时登录窗口的界面效果如下图所示。
果不其然,登录按钮下方的文本标签展示了输入的用户名和暗码信息,可知登录按钮的单击事情也正确呼应了。

未经允许不得转载:IT技术网站 » 实现FXML对应的控制器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载