Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx don';t单击其他节点时不会失去焦点_Java_Javafx - Fatal编程技术网

javafx don';t单击其他节点时不会失去焦点

javafx don';t单击其他节点时不会失去焦点,java,javafx,Java,Javafx,我在rootpane的左边有一个vbox,在rootpane的右边有一个vbox。 leftvobx有3个textarea节点,rightvbox有一个colorpicker; 我想要:当我在leftvbox上选择一个textarea节点,然后单击rightvbox上的colorpicker时,当前textarea不会失去焦点 我的想法和“场景生成器”一样,当我们在工作区中选择一个便笺,然后处理右侧的幻灯片功能区域(如更改颜色、设置大小和字体),便笺不会失去焦点,这样动作就知道工作区中的哪个节点

我在rootpane的左边有一个vbox,在rootpane的右边有一个vbox。 leftvobx有3个textarea节点,rightvbox有一个colorpicker; 我想要:当我在leftvbox上选择一个textarea节点,然后单击rightvbox上的colorpicker时,当前textarea不会失去焦点

我的想法和“场景生成器”一样,当我们在工作区中选择一个便笺,然后处理右侧的幻灯片功能区域(如更改颜色、设置大小和字体),便笺不会失去焦点,这样动作就知道工作区中的哪个节点需要处理

代码: VBox leftBox=新的VBox(); VBox rightBox=新的VBox()


没有办法让两个节点同时聚焦。这会很奇怪,因为每个键盘事件等都会转到两个节点。也可以在JavaFX场景生成器中尝试。单击SceneBuilder中的某个内容并按delete,它将被删除。按SceneBuilder中的某些内容,然后按右侧的,然后按delete,您首先选择的项目将不会被删除。因为它实际上没有焦点。SceneBuilder只显示上次选择的内容

来解决你的问题。我将创建一个新变量
按钮并在其他按钮上设置侦听器
focusedProperty
如下所示:

btn2.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
    if(!newValue) lastFocused = btn2;
});

我还没有实际测试代码。

也许我描述错了。场景生成器有3个部分,左侧部分用于选择容器、控件、菜单等。中间部分是主要工作区域,右侧部分是设置属性、布局和核心。因此,当我们在Scene builder的中间部分选择一个节点,然后在右侧部分设置Scene builder右侧功能区域的布局和属性时,该节点并没有失去焦点。想想看,如果节点失去了焦点,在正确的区域,@A.Sheh,我认为你描述的是正确的。但是,节点仍然失去了实际的焦点。它只是看起来有焦点。你可以通过造型来做到这一点。它有焦点的外观只是按钮的样式。但实际的焦点意味着它接收键盘输入,而在Scenebuilder中,中心的节点并没有像我的回答中所描述的那样接收键盘输入。那么我如何实现这个功能呢。当我在左窗格中选择一个节点,并在另一个右窗格中设置其样式(如颜色、大小、字体)时,我希望做同样的事情。但是,当我设置样式时,它需要知道设置了哪个节点。变量lastFocused将包含在转到颜色选择器之前在左窗格中选择的按钮。
btn2.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
    if(!newValue) lastFocused = btn2;
});
colorpicker.setOnAction(e->{
    lastFocused.setText("color changed.");
    lastFocused.requestFocus();
});