创建GUI后,下一步是使按钮能够在按下时将文本字段更改为各自的大小写。但是,我尝试过的所有方法似乎都无法证明这一点。
AppContainer.tabbedApp.Tabs.Add(new TitleBarTab(AppContainer.tabbedApp)
{
Content = new Form2 { Text = "Another Tab" }
});
AppContainer.tabbedApp.SelectedTabIndex = 0;
我如何检索文本肯定有问题,或者完全是因为我要在If语句中尝试进行操作?每个按钮都是我尝试过的两个版本,它们使我认为我在检索文本错误或操作错误。预先谢谢你!
答案 0 :(得分:0)
其他地方是否需要字符串userText?直接通过getText()和setText()获取和设置userInput的文本会更好。此外,当您已经将它作为全局变量使用时,无需为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);
}
}