如何阻止JavaFX应用启动时自动选中TextField?
解决JavaFX启动时TextField自动选中遮挡提示文本的问题
方法一:通过SceneBuilder设置
- 打开目标FXML文件对应的SceneBuilder界面
- 选中根容器(示例中的
VBox) - 在右侧Properties面板里找到
focusTraversable属性,将其设置为true - 启动应用时焦点会落在根容器上,而非第一个TextField,提示文本就能正常显示
方法二:通过Java代码实现
在控制器类SchermataLogin中添加初始化逻辑,让根容器获取焦点:
import javafx.fxml.FXML; import javafx.scene.layout.VBox; public class SchermataLogin { @FXML private VBox root; // 需给FXML根VBox添加fx:id="root" @FXML public void initialize() { // 让根容器获取焦点,移除TextField的默认焦点 root.requestFocus(); } // 保留原有控制器方法(如onLoginClicked等) }
需同步修改FXML根标签,添加fx:id="root":
<VBox fx:id="root" prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.vipagepharma.farmacia.autenticazione.login.SchermataLogin">
替代方案
若不想修改根容器,也可直接让首个TextField放弃焦点:
@FXML private TextField username; @FXML public void initialize() { username.clearFocus(); }
内容的提问来源于stack exchange,提问作者Allexj
相关产品推荐
相关产品推荐

