如何恰当地获取文本的文本和颜色以在4种颜色之间切换/切换?

时间:2017-10-16 21:11:03

标签: java javafx colors toggle

我目前设置的JavaFX代码可以在蓝色和红色之间切换。程序运行时,带有“更改为红色”文本的按钮将以蓝色文本显示。如果我单击按钮,它将变为以红色文字写的“更改为蓝色”。如果我再次点击它,循环重新开始。我想做的是应用相同的模式,但使用四种颜色。例如,我希望它开始于:

“变为红色”,用蓝色文字书写。

然后点击。

“改为绿色”,用红色文字写成。

然后点击。

“变为紫色”,用绿色文字写成。

然后点击。

“改为蓝色”,用紫色文字写成。

然后点击后再次开始循环:

“变为红色”,用蓝色文字书写。

等。等

这是我有两种颜色的代码:

public class FirstUserInput extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Change to Red");
        btn.setTextFill(Color.BLUE);

    btn.setOnAction(e -> {
        if (btn.getTextFill() == Color.RED) {
            btn.setText("Change to Red");
            btn.setTextFill(Color.BLUE);
        } else {
            btn.setText("Change to Blue");
            btn.setTextFill(Color.RED);
        }
    });

任何人都可以帮我修改此代码以使用四种颜色吗?

1 个答案:

答案 0 :(得分:1)

如果你想减少必须使用if-else语句编写的代码,那么可以使用数组或枚举来保存所有选项,并在每个动作事件中选择正确的代码,如:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class TestApp extends Application {

    private int index = 0;

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Change to Red");

        String allTexts[] = { "Change to Red", "Change to Blue", "Change to Green", "Change to Pink" };
        Color allColors[] = { Color.BLUE, Color.RED, Color.PINK, Color.GREEN };

        btn.setOnAction(e -> {

            index++;
            if(index >= allTexts.length ) {
                index = 0;
            }

            btn.setText(allTexts[index]);
            btn.setTextFill(allColors[index]);

        });

        VBox box = new VBox();
        box.getChildren().add(btn);

        primaryStage.setScene(new Scene(box));
        primaryStage.show();
    }

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

以上的工作当改变是顺序的时候我希望你正在寻找的东西。