我创建了一个Label并为其分配了一个字符串,其中包含一个常量变量名。然后我给了FXML标签fx:控制器中标签的概念,用@FXML注释: FXML文件:
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="387.0" prefWidth="444.0"
xmlns="http://javafx.com/javafx/8.0.111"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="application.HomeController">
<children>
<Label fx:id="welcomeMsg" layoutX="7.0" layoutY="16.0"
prefHeight="38.0" prefWidth="428.0" textAlignment="CENTER"
textOverrun="CLIP" />
</children>
</AnchorPane>
控制器:
package application;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class HomeController {
public String appName = "Probability Distribution Calculator";
@FXML
private Label welcomeMsg = new Label("Welcome to the "+appName);
}
标签显示我给它的样式,但是文本没有显示。如果我为FXML元素分配静态文本属性它可以工作,但是当我尝试使用控制器分配名称时,它不会。
答案 0 :(得分:0)
我认为您的控制器应该从Initializable
并且您不应该执行welcomeMsg = new Label("Welcome to the "+appName)
因为welcomeMsg
将在加载视图完成后分配给fxml中的标签,并且不会使变量private
public class HomeController extends Initializable {
public String appName = "Probability Distribution Calculator";
@FXML Label welcomeMsg;
}
答案 1 :(得分:0)
阿里是对的。您应该使用Label类的setText方法来设置欢迎消息。看看这里:http://docs.oracle.com/javafx/2/ui_controls/label.htm