【问题标题】:In Java FX, how do you set the text programmatically? [duplicate]在 Java FX 中,如何以编程方式设置文本? [复制]
【发布时间】:2014-08-04 23:16:00
【问题描述】:

好的,所以我想使用 JavaFX 更改按钮中的文本,但我不知道如何:/这是我的代码:

package application;

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

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("FXML Timer");
        BorderPane myPane = (BorderPane) FXMLLoader.load(getClass()
            .getResource("FX-Timer.fxml"));
        Scene myScene = new Scene(myPane);
        myScene.getStylesheets().add(
            Main.class.getResource("application.css")
                            .toExternalForm());
        primaryStage.setResizable(false);
        primaryStage.setScene(myScene);
        primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
}
}

这是我的 FXML:

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

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity"
    minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0"
    prefWidth="368.0" xmlns="http://javafx.com/javafx/8"     xmlns:fx="http://javafx.com/fxml/1">
    <center>
        <Label alignment="CENTER" contentDisplay="CENTER" prefHeight="187.0"
            prefWidth="365.0" text="Label" BorderPane.alignment="CENTER">
            <font>
                <Font size="96.0" />
            </font>
        </Label>
    </center>
    <bottom>
        <GridPane BorderPane.alignment="CENTER">
            <columnConstraints>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
                    prefWidth="100.0" />
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
                    prefWidth="100.0" />
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
                    prefWidth="100.0" />
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
                    prefWidth="100.0" />
            </columnConstraints>
            <rowConstraints>
                <RowConstraints minHeight="10.0" prefHeight="30.0"
                    vgrow="SOMETIMES" />
            </rowConstraints>
            <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>
        </GridPane>
    </bottom>
    <top>
        <GridPane BorderPane.alignment="CENTER">
            <columnConstraints>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
                    prefWidth="100.0" />
                <ColumnConstraints halignment="RIGHT" hgrow="SOMETIMES"
                minWidth="10.0" prefWidth="100.0" />
            </columnConstraints>
            <rowConstraints>
                <RowConstraints minHeight="10.0" prefHeight="30.0"
                    vgrow="SOMETIMES" />
            </rowConstraints>
            <children>
                <Button alignment="CENTER" contentDisplay="CENTER"
                    mnemonicParsing="false" prefHeight="54.0" prefWidth="183.0" text="Start" textAlignment="CENTER" />
                <Button mnemonicParsing="false" prefHeight="41.0" prefWidth="198.0"
                text="Stop" GridPane.columnIndex="1" textAlignment="CENTER"
                alignment="CENTER" />
            </children>
        </GridPane>
    </top>
</BorderPane>

这是我的 FXML,我正在尝试更改我在 FXML 中制作的按钮中的文本。

package application;

import java.net.URL;
import java.util.ResourceBundle;
import java.util.Timer;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;

public class FX_TimerController implements Initializable {
    @FXML
    private Button fx_btnStart;
    @FXML
    private Button fx_btnStop;
    @FXML
    public Button fx_btnHourUp;
    @FXML
    private Button fx_btnHourDown;
    @FXML
    private Button fx_btnMinuteUp;
    @FXML
    private Button fx_btnMinuteDown;
    Timer timer;

    //variables
    private boolean timerRunning = false; // variable to check if the timer is running
    private int hours = 0;//never higher than 24, never lower than 0
    private int minutes = 0;//never goes above 59 or lower than 0


    @Override
    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 arrows for buttons yo.
        fx_btnHourUp = new Button("HELLO");
    }

    }

在最后一节课中,我试图将 fx_btnHourUp 中的文本更改为“HELLO”,但它不起作用我尝试了几种不同的方法,有人可以告诉我它是如何完成的,也许还给我一个资源更好地学习这个?

【问题讨论】:

    标签: java button javafx javafx-8 fxml


    【解决方案1】:

    您可以使用setText method

    【讨论】:

    • 我试过了,但没用:/ 我这样做了:fx_btnHourUp.setText("HELLO");还是不行,有没有别的办法?
    • 您不需要指令 fx_btnHourUp = new Button("HELLO")。将其替换为 fx_btnHourUp.setText("NEW TEXT");
    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 2021-09-15
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多