有没有办法在javafx中消除注意力?
我知道你可以通过做node.requestFocus()来将焦点放在javafx中的节点上;但是有没有办法从javafx中的节点上移开焦点或阻止对对象的关注?
我知道你可以通过做node.requestFocus()来将焦点放在javafx中的节点上;但是有没有办法从javafx中的节点上移开焦点或阻止对对象的关注?
我不认为这可以保证这总是有效的,但你可以尝试将焦点设置为本质上不接受键盘输入的东西(例如布局窗格):
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();
}
}
node = new node() {
public void requestFocus() { }
};
现在,这将覆盖焦点,节点将永远无法获得焦点。您还可以(如前所述)通过以下方式禁用节点:
node.setDisable(true);
如果您以后需要集中注意力:
node.setDisable(false);
node.requestFocus();
我决定用另一个选项更新我的答案。如果您在程序开始时提供另一个节点焦点,则可以将特定节点设置为不可遍历,并且它不会获得焦点。
node.setFocusTraversable(false);