java - 我无法更改 JavaFX 应用程序中的标签文本

标签 java javafx

我想通过setText更改标签的文本方法,但即使在定义 fx:id 之后我也无法这样做参数。

Welcome.fxml

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>

<AnchorPane id="AnchorPane" prefHeight="247.0" prefWidth="615.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="banking.manager.WelcomeController">
    <children>
        <Label fx:id="welcomeLabel" layoutX="26.0" layoutY="23.0" prefHeight="29.0" prefWidth="224.0" text="Banking Manager">
         <font>
            <Font size="24.0" />
         </font></Label>
        <Button fx:id="exitButton" layoutX="526.0" layoutY="192.0" mnemonicParsing="false" onAction="#handleCloseRequest" prefHeight="27.0" prefWidth="75.0" text="Close" />
      <Button fx:id="signButton" layoutX="440.0" layoutY="192.0" mnemonicParsing="false" onAction="#handleSignInRequest" prefHeight="27.0" prefWidth="75.0" text="Sign In" />
      <GridPane layoutX="26.0" layoutY="81.0" prefHeight="79.0" prefWidth="353.0">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="138.0" minWidth="10.0" prefWidth="110.0" />
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="243.0" minWidth="10.0" prefWidth="243.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Label prefHeight="18.0" prefWidth="93.0" text="Username:" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
               <font>
                  <Font size="14.0" />
               </font>
            </Label>
            <Label prefHeight="18.0" prefWidth="93.0" text="Password:" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER">
               <font>
                  <Font size="14.0" />
               </font>
            </Label>
            <TextField fx:id="usernameField" prefHeight="27.0" prefWidth="247.0" GridPane.columnIndex="1" />
            <PasswordField fx:id="passwordField" prefHeight="27.0" prefWidth="251.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
         </children>
      </GridPane>
      <ImageView fitHeight="117.0" fitWidth="151.0" layoutX="440.0" layoutY="38.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@safebox.png" />
         </image>
      </ImageView>
      <Label fx:id="informationLabel" text="Log in" layoutX="26.0" layoutY="197.0" prefHeight="17.0" prefWidth="353.0" />
    </children>
</AnchorPane>

WelcomeController.java

import java.net.URL;
import java.sql.ResultSet;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Label;

/**
 *
 * @author apple
 */
public class WelcomeController implements Initializable {

    @FXML
    private Button signButton;
    private Button exitButton;
    private Label informationLabel = new Label();
    private TextField usernameField = new TextField();
    private PasswordField passwordField = new PasswordField();

    @FXML
    private void handleSignInRequest(ActionEvent event) throws Exception {

        informationLabel.setText("Please wait while request is getting processed...");
        // ...

我尝试将其移动到另一个事件处理程序中,但仍然没有任何结果。

最佳答案

FXMLLoader 无法访问 informationLabel,因为它没有使用 @FXML 进行注释。
通过在声明中使用新的 Label 初始化字段,您只需创建一个不在任何场景中显示的 Label 即可。相反,它应该这样声明:

@FXML
private Label informationLabel;

关于java - 我无法更改 JavaFX 应用程序中的标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44220891/

相关文章:

java - 无法检索预绑定(bind)的 Hibernate session - 无法获取当前线程的事务同步 session

java - 使用条形码编号获取产品信息,如名称、价格等

单击时Javafx2修改按钮

带有 CSS 的 JavaFX TextArea 样式

java - Java I/O 程序中的 Try-Catch block 出现问题

java - jdbc apache poi 创建 xls 文件

java - 不使用局部变量word的值

JavaFx运行出错

multithreading - 如何从我自己的线程安全地修改 JavaFX GUI 节点?

Java:通过应用程序类打开游戏时不会触发 keyPressed 事件