javaFX,怎样正确建立 界面.fxml 和controller.java之间的联系?

qingting0001 2017-06-23 06:35:26
看了很多博客,也下载了示例源代码。示例源代码可以正常运行,但按照示例的思想,我自己的代码就不能正常运行。
写了一个登录界面
我知道需要在FXML中写fx:controller="包名.FxmlLoginController",以及onAction="#onButtonClick",以及在FxmlLoginController.java中写onButtonClick方法,但是只要添加了fx:controller="Control.java或者onAction="#onButtonClick",就不能出现登录界面了。
<StackPane fx:id="stackPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" ">

去掉 fx:id="stackPane"就可以显示登录界面,不去掉就不能显示登录界面

请问怎样才能正确建立界面和事件之间的联系啊?

谢谢谢谢!!
...全文
1735 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnson_moon 2017-09-26
  • 打赏
  • 举报
回复
使用Controller类方式定义控件映射关系的,需要注意: 1.Controller类的字段定义名称应当与fxml文件中控件id一致,事件监听方法名称应当与onAction=”#xxxxx”中的xxxxx一致,字段、方法都需要用@FXML注解修饰。 2.在fxml文件的根节点添加fx:controller="xxxxx"表示该布局文件对应的Controller是哪一个。
bestzwting 2017-07-28
  • 打赏
  • 举报
回复
//FXML文件 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.*?> <?import java.lang.*?> <?import javafx.scene.layout.*?> <BorderPane fx:id="dddd" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="feite.gvswing.ftgn.ZhuYeController"> <center> <Pane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER"> <children> <Label layoutX="14.0" layoutY="21.0" text="串口波特率" /> <Button fx:id="gvBut" layoutX="235.0" layoutY="17.0" mnemonicParsing="false" text="Button" /> <TextField fx:id="chuanKou" layoutX="84.0" layoutY="17.0" /> <Label layoutX="14.0" layoutY="61.0" prefHeight="15.0" prefWidth="57.0" text="ID:" /> <TextField layoutX="84.0" layoutY="57.0" /> </children> </Pane> </center> </BorderPane> //场景中显示代码: FXMLLoader mylong=new FXMLLoader(getClass().getResource("/feite/gvswing/fxwjian/zhuyea.fxml")); Parent root=null; try { root=mylong.load(); ZhuYeController aa=new ZhuYeController(); aa.kk=88; //mylong.setRoot(this); //mylong.setController(aa); ZhuYeController bb=mylong.getController(); bb.huoQuShuJu(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } new Scene(root);//添加到自己的场景中 //Controller类: package feite.gvswing.ftgn; import javafx.fxml.FXML; import javafx.scene.control.Button; public class ZhuYeController { @FXML private Button gvBut; public int kk=1; public ZhuYeController(){ } public void huoQuShuJu(){ System.out.println("按钮怎样了:"+gvBut+" 值:"+kk); } }
bestzwting 2017-07-28
  • 打赏
  • 举报
回复
我在我这边试了一下,可以正常显示java8最新版中,应该不是id 的问题,可能是其他方面的问题

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧