我正在创建一个简单的彩票游戏,我可以选择1到42之间的数字。我想用红色“X”标记所选数字(而不是使用效果),但用户仍应看到所选数字数字在“X”下面。当用户再次点击标记的号码时,“X”应该消失。 GUI看起来像这样: enter image description here
如何以第一个文字仍然可见的方式在按钮上显示第二个文字?
感谢您的帮助
亲切的问候
乔尔
答案 0 :(得分:0)
您可以将按钮的图形设置为StackPane,然后将一个元素添加到StackPane。由于StackPane的子项都显示在彼此之上,因此产生了您想要的效果。我的例子只显示了这个概念,我可能会在你的使用场景中编写一个扩展Button的新类:)
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
public class NewFXMain extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Pane pane = new Pane();
StackPane buttonPane = new StackPane();
Label label = new Label("42");
buttonPane.getChildren().add(label);
Button button = new Button();
button.setGraphic(buttonPane);
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if(buttonPane.getChildren().size() == 1){
Label labelX = new Label("X");
labelX.setStyle("-fx-text-fill: red;");
buttonPane.getChildren().add(labelX);
}
else
buttonPane.getChildren().remove(1);
}
});
pane.getChildren().addAll(button);
primaryStage.setScene(new Scene(pane, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}