JavaFX通过单击Button更改Text

时间:2018-04-11 08:08:54

标签: java javafx

以下任务:我想要一封包含字母'L'和两个Button的文字,一个到#34;增加"和一个减少"这封信。但只有到达字母'A''Z'之后。到了希望的信件之前,我可以增加/减少这封信。唯一的问题:当我到达'Z'然后点击按钮返回时,它再次将字母增加到'['。我觉得文本对按钮的反应不正确。对不起,如果描述混乱

public class Main extends Application implements EventHandler<ActionEvent> {
    private Character defaultLetter = 'L';

    private Button btnred;
    private Button btngreen;
    private Text text;


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

    }

    @Override
    public void start(Stage stage) throws Exception {
        btnred = new Button();
        btnred.setText("Previous");
        btnred.getStyleClass().add("green-btn-small-font");
        btnred.setOnAction(this);
        btnred.setStyle("-fx-font: 22 arial; -fx-base: #E70116;");

        btngreen = new Button();
        btngreen.setText("Next");
        btngreen.getStyleClass().add("red-btn-small-font");
        btngreen.setOnAction(this);
        btngreen.setStyle("-fx-font: 22 arial; -fx-base: #01E736;");

        text = new Text();
        text.setText(String.valueOf(defaultLetter));
        text.setStyle("-fx-font: 22 arial;");
        BorderPane pane = new BorderPane();
        pane.setTop(text);
        pane.setLeft(btngreen);
        pane.setRight(btnred);

        Scene scene = new Scene(pane);
        stage.setTitle("Hausaufgabe 1");
        stage.setX(400);
        stage.setY(200);
        stage.setHeight(500);
        stage.setWidth(500);
        stage.setScene(scene);
        stage.show();

    }


    @Override
    public void handle(ActionEvent event) {
        if ((event.getSource() == btnred) && defaultLetter >= 'A') {
            text.setText(String.valueOf(defaultLetter--));
        }
        if ((event.getSource() == btngreen) && defaultLetter <= 'Z') {
            text.setText(String.valueOf(defaultLetter++));
        }
    }
}

2 个答案:

答案 0 :(得分:2)

if ((event.getSource() == btnred) && defaultLetter > 'A') {
    defaultLetter--;
    text.setText(String.valueOf(defaultLetter));
}
if ((event.getSource() == btngreen) && defaultLetter < 'Z') {
     defaultLetter++;
     text.setText(String.valueOf(defaultLetter));
}

每次都需要更新defaultLetter值

答案 1 :(得分:1)

您应该在递增/递减后阅读新信。此外,如果可能的源的功能完全不同,则不应对多个按钮使用相同的事件处理程序(在您的情况下,最多可以输入一个$sql="Select * from table where FoodCategories=$Food OR FoodCategories=$FastFood OR FoodCategories=$Chinese "; 身体)。

此外,由于您在更新信函之前进行了检查,因此如果if,则无法允许增量。

最好做这样的事情:

defaultLetter == boundChar