开发者社区> 问答> 正文

JavaFX,controller属性空指针?报错

fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane prefHeight="200.0" prefWidth="200.0" 
	xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8"
	fx:controller="application.MyController">
   <children>
      <Button id="myButton" layoutX="73.0" layoutY="89.0" 
      		mnemonicParsing="false" text="show time" onAction="#showDateTime"/>
      <TextField id="myTextField" layoutX="32.0" layoutY="30.0" />
   </children>
</AnchorPane>

controller

package application;

import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;

public class MyController implements Initializable{
	
	@FXML
	private Button myButton;
	@FXML
	private TextField myTextField;

	@Override
	public void initialize(URL location, ResourceBundle resources) {
		// TODO Auto-generated method stub
		
	}
	
	public void showDateTime(ActionEvent event) {
		System.out.println("button click");
		
		Date date = new Date();
		
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH🇲🇲ss");
		
		String format = df.format(date);
		
		myTextField.setText(format);
	}

}

main

package application;
	
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;


public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			Parent root = FXMLLoader.load(getClass().getResource("/application/MySence.fxml"));
			primaryStage.setTitle("first window");
			primaryStage.setScene(new Scene(root));
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

点击myButton的时候,MyController中myTextField为空,setText时候报错。

初学者,按照教程来的,感觉像是没有初始化到。

 

展开
收起
爱吃鱼的程序员 2020-06-07 16:34:53 818 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>找到了找到了,在fxml文件里面,id应该为fx:id</p>
    
    2020-06-07 16:35:05
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载