我有一个带有ContextMenu的按钮,其中包含MenuItem rename
rename.setOnMouseClicked应该可以更改按钮中的文本:用户实际上可以删除文本中的字母或写入它然后按回车来验证他输入的内容,以某种方式作为textField工作。
可以这样做吗?如果是的话,我怎么样?谢谢!
答案 0 :(得分:3)
是强>
以下是:
public class EditableButtonApp extends Application {
@Override
public void start(Stage primaryStage) {
BorderPane root = new BorderPane();
root.setCenter(new EditableButton("Editable Button"));
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
class EditableButton extends Button {
TextField tf = new TextField();
public EditableButton(String text) {
setText(text);
setOnMouseClicked(e -> {
tf.setText(getText());
setText("");
setGraphic(tf);
});
tf.setOnAction(ae -> {
// if (validateText(tf.getText())) {// this is where you would validate the text
setText(tf.getText());
setGraphic(null);
// }
});
}
}
public static void main(String[] args) { launch(args); }
}