Jam*_*s_D 17
我认为没有任何保证这将始终有效,但您可以尝试将焦点设置为本身不接受键盘输入的内容(例如布局窗格):
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class NoFocusTest extends Application {
@Override
public void start(Stage primaryStage) {
TextField tf1 = new TextField();
tf1.setPromptText("Enter something");
TextField tf2 = new TextField();
tf2.setPromptText("Enter something else");
VBox root = new VBox(5, tf1, tf2);
primaryStage.setScene(new Scene(root, 250, 150));
primaryStage.show();
root.requestFocus();
}
}
Run Code Online (Sandbox Code Playgroud)
Phi*_*ghn 11
node = new node() {
public void requestFocus() { }
};
Run Code Online (Sandbox Code Playgroud)
现在这将覆盖焦点,节点永远不会有焦点.您也可以(如前所述)禁用节点:
node.setDisable(true);
Run Code Online (Sandbox Code Playgroud)
如果您以后需要关注:
node.setDisable(false);
node.requestFocus();
Run Code Online (Sandbox Code Playgroud)
我决定用另外一个选项更新我对此的回答.如果您在程序开始时给予另一个节点焦点,则可以将特定节点设置为不可遍历,并且不会获得焦点.
node.setFocusTraversable(false);
Run Code Online (Sandbox Code Playgroud)