JavaFx开发笔记-合肥一六八中学校园网
合肥一六八中学校园网-最近想倒腾一下JavaFx技术,利用掌握的相关知识,进行一些学习开发一些工作中需要用到的小工具岂不是美滋滋。于是花了几天的学习和研究,空闲时开发了一款adb工具,将adb命令进行窗口化。效果如下:
开发过程中有一些代码需要进行总结
1.Main.java入口函数调用Controller
我们有这样的需求,view中有一些东西需要初始化,想把这些方法写在Controller中,但是是无法在Controller构造函数中进行实现的。所以我们需要在Main中进行Controller的调用Main.java
FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
Parent root = loader.load();
primaryStage.setTitle("adb窗口工具");
primaryStage.setScene(new Scene(root, 900, 550));
primaryStage.setResizable(false);
primaryStage.show();
mController = loader.getController();
mController.initView();//调用initView方法
mController.setOwnerWindow(primaryStage);
2.从界面中匹配view
基于安卓应用的开发经验,我们需要从sample.fxml上findViewById,获得view。但是JavaFx没有提供类似方法但是提供了以下形式。sample.fxml
<TextField fx:id="textInput" maxWidth="250" GridPane.columnIndex="1" GridPane.rowIndex="10"/>
Controller.java
import javafx.fxml.FXML;
public class Controller {
@FXML
private TextField textInput;
}
Java文件中变量名需要与fxml文件中fx:id对应
3.fxml中绑定Controller
<!--xxx为最外层布局-->
<xxx xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="top.foxhome.top.adbutil.Controller">
</xxx>
依据fx:controller属性进行绑定。
5.线程切换
开发过程中使用了new Thread(()->..).start();然后调用Platform.runLater(()->...);进行线程切换结果还是引起了阻塞。后续的研究中使用了以下方法方可进行正常的线程切换。
new Thread(new Task<E>() {
@Override
protected E call() throws Exception {//耗时任务,在自线程中运行
for (int index=0;index<100;index++){
updateMessage("msg:"+index);//发送Message
updateProgress(index,100);//发送进度
}
return new E();
}
@Override
protected void succeeded() {//UI线程,运行未除错
super.succeeded();
E obj=getValue();//获取call的return值
}
@Override
protected void failed() {//UI线程,运行出错
super.failed();
}
@Override
protected void updateMessage(String message) {//UI线程,接收Message
super.updateMessage(message);
}
@Override
protected void updateProgress(long workDone, long max) {//UI线程,接收进度
super.updateProgress(workDone, max);
}
}).start();
6.绑定点击事件
我们需要一个按钮或者view能够接收到用户的交互,需要进行事件的绑定,列如一个按钮的点击事件sample.fxml
<Button fx:id="installApk" mnemonicParsing="false" onAction="#installApk" text="安装APK"/>
当我们输入onAction="#installApk"IDE即可进行代码提示,我们依据提示在与之绑定的controller创建对应的方法即可。Controller.java
public void installApk(ActionEvent actionEvent) {
}
另外推荐使用IDE提示点击进行自动创建,手动创建比较麻烦。
7.按钮的禁用和启用
与安卓开发不同的是,安卓的设计思路是设置是否可用JavaFX的设计思路是设置是否禁用
installApk.setDisable(true);//禁用
installApk.setDisable(false);//启用
JavaFx开发笔记最先出现在狐狸之家。
随机文章
SEO小小课堂网SEO教程
站长导航
网站内容优化
GEO培训
SEO小小课堂网
SEO教程
友情链接交换
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/66768.html

微信扫一扫
支付宝扫一扫