我正在尝试使用以下代码设置按钮文本:
public void initialize(URL location, ResourceBundle resources) { // TODO Auto-generated method stub //checking to see whether these buttons were loaded from the FXML file assert fx_btnStart != null : "fx:id=\"fx_btnStart\" was not injected: Check your FXML file 'FX-Timer.fxml'."; assert fx_btnStop != null : "fx:id=\"fx_btnStop\" INJECTION ERROR"; assert fx_btnHourUp != null : "fx:id=\"fx_btnHourUp\" INJECTION ERROR"; assert fx_btnHourDown != null : "fx:id=\"fx_btnHourDown\" INJECTION ERROR"; assert fx_btnMinuteUp != null : "fx:id=\"fx_btnMinuteUp\" INJECTION ERROR"; assert fx_btnMinuteDown != null : "fx:id=\"fx_btnMinuteDown\" INJECTION ERROR"; //ending of initialization of FXML elements //set words for buttons yo. fx_btnHourUp.setText("HELLO"); }
这是我的FXML:
<children> <Button mnemonicParsing="false" prefHeight="53.0" prefWidth="92.0" text="Hup" textAlignment="CENTER" alignment="CENTER" id="fx_btnHourUp"/> <Button mnemonicParsing="false" prefHeight="37.0" prefWidth="92.0" text="Hdown" GridPane.columnIndex="1" textAlignment="CENTER" alignment="CENTER" id="fx_btnHourDown" /> <Button mnemonicParsing="false" prefHeight="44.0" prefWidth="92.0" text="Mup" GridPane.columnIndex="2" textAlignment="CENTER" alignment="CENTER" id="fx_btnMinuteUp" /> <Button mnemonicParsing="false" prefHeight="39.0" prefWidth="122.0" text="Mdown" GridPane.columnIndex="3" textAlignment="CENTER" alignment="CENTER" id="fx_btnMinuteDown" /> </children>
但这行不通,我不明白为什么,还有其他人知道如何使用JavaFX设置按钮文本吗?>。>; 我觉得JavaFX不像Swing那样简单…但是无论如何,有人知道我在做什么错吗?另外,有没有人知道有什么资源可以学习FXML?我喜欢FXML而不是用Java进行编码,但是似乎没有太多的东西,我是否是世界上唯一喜欢FXML而不是JavaFX GUI编码的人?
您确定您的元素实际上不是null,并且您的assert语句实际上在执行它们应做的事情吗?单击我以获取有关使用断言语句的信息。确保变量声明保留为@FXML private Button fx_btnHourUp;,并且永远不要通过实例化按钮fx_btnHourUp = new Button();。
@FXML private Button fx_btnHourUp;
fx_btnHourUp = new Button();
您是否正在使用SceneBuilder 2.0创建fxml?它是一个程序,您可以在设计fxml的同时避免许多此类常见错误。在这里下载链接。