изменение моего текстового поля на верхний / нижний регистр не работает должным образом - PullRequest
0 голосов
/ 10 февраля 2019

После создания моего графического интерфейса мой следующий шаг состоял в том, чтобы при нажатии кнопки можно было менять текстовое поле на соответствующий регистр.Однако ни один из способов, которые я пробовал, кажется, не демонстрирует это.

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class UpperLowerClass extends Application  {

    private Button upperButton;
    private Button lowerButton;
    private String userText;
    private TextField userInput;
    private Stage window;



    public static void main(String[] args) {

        launch(args);   

    }

    @Override
    public void start(Stage primaryStage) {
        window = primaryStage;
        window.setTitle("Uppercase to Lowercase");


        //GRID
        GridPane grid = new GridPane();
        grid.setPadding(new Insets(10, 10, 10, 10));
        grid.setVgap(10);
        grid.setHgap(10);


        //UPPERCASE BUTTON
        upperButton = new Button("Uppercase");
        upperButton.setOnAction(this::changeTextButton);
        GridPane.setConstraints(upperButton, 0, 0);

        //LOWERCASE BUTTON
        lowerButton = new Button("Lowercase");
        lowerButton.setOnAction(this::changeTextButton);
        GridPane.setConstraints(lowerButton, 0, 1);

        //TEXTFIELD
        TextField userInput = new TextField();
        userInput.getText();
        userInput.setText(String.valueOf(userText));
        GridPane.setConstraints(userInput, 0, 2);


        grid.getChildren().addAll(upperButton, lowerButton, userInput);


        //SCENE
        Scene myScene = new Scene(grid, 300, 250);
        window.setScene(myScene);
        window.show();

        primaryStage.setScene(myScene);

        primaryStage.show();

    }
    //EVENT
    public void changeTextButton(ActionEvent event)
    {
        if (event.getSource() ==upperButton) {
            userText = userText.toUpperCase();
        }
        if  (event.getSource() ==lowerButton) {
            userInput.setText(String.valueOf(userText.toLowerCase()));
        }



    }



}

Должна быть проблема с тем, как я получаю текст, или это полностью из-за манипуляций, которые я пытаюсь сделать в Ifзаявления?Каждая кнопка - это две версии, которые я попробовал, что наводит меня на мысль, что я неправильно извлекаю текст или неправильно манипулирую.Заранее спасибо!

1 Ответ

0 голосов
/ 11 февраля 2019

Нужен ли пользовательский текст String где-либо еще?Получение и установка текста userInput напрямую через getText () и setText () было бы лучше imo.Кроме того, нет необходимости создавать локальную переменную для userInput, когда она уже используется в качестве глобальной переменной.

Это ваш проверенный код, работающий: (Я удалил метод changeTextButton и просто внес изменения в кнопкинапрямую, но это может быть достаточно легко выделено.)

открытый класс UpperLowerClass расширяет приложение {

private Button upperButton;
private Button lowerButton;
private TextField userInput;
private Stage window;


@Override
public void start(Stage primaryStage) {
    try {

        window = primaryStage;

        //GRID
        GridPane grid = new GridPane();
        grid.setPadding(new Insets(10, 10, 10, 10));
        grid.setVgap(10);
        grid.setHgap(10);


        //UPPERCASE BUTTON
        upperButton = new Button("Uppercase");
        upperButton.setOnAction(event -> {
            if(userInput.getText()!=null) {
                userInput.setText(userInput.getText().toUpperCase());
            }
        });
       // upperButton.setOnAction(this::changeTextButton);
        GridPane.setConstraints(upperButton, 0, 0);

        //LOWERCASE BUTTON
        lowerButton = new Button("Lowercase");
        //lowerButton.setOnAction(this::changeTextButton);
        lowerButton.setOnAction(event -> {
            if(userInput.getText()!=null) {
                userInput.setText(userInput.getText().toLowerCase());
            }
        });
        GridPane.setConstraints(lowerButton, 0, 1);

        //TEXTFIELD
        userInput = new TextField(); //don't need to create new Textfield here
        GridPane.setConstraints(userInput, 0, 2);

        grid.getChildren().addAll(upperButton, lowerButton, userInput);

        //SCENE
        Scene myScene = new Scene(grid, 300, 250);
        window.setScene(myScene);
        window.show();

    } catch(Exception e) {
        e.printStackTrace();
    }
}

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...