鼠标点击事件未从JavaFXML触发

鼠标点击事件未从JavaFXML触发,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,我只是想学习JavaFX,我的目标是,如果单击“隐藏终端”按钮,拆分窗格分隔符将一直向右移动。以下是我在场景生成器中设置的内容: 我尝试将代码添加到initialise()方法中,并可以确认它是否运行 以下是应该从鼠标点击事件触发的代码: @FXML void terminalHideShow(MouseEvent event) { terminalHideShowButton.rotateProperty().setValue(180.0); terminalCommandL

我只是想学习JavaFX,我的目标是,如果单击“隐藏终端”按钮,拆分窗格分隔符将一直向右移动。以下是我在场景生成器中设置的内容:

我尝试将代码添加到initialise()方法中,并可以确认它是否运行

以下是应该从鼠标点击事件触发的代码:

@FXML
void terminalHideShow(MouseEvent event) {
    terminalHideShowButton.rotateProperty().setValue(180.0);
    terminalCommandListOutput.getItems().add("TEXT"); // a test

    if(mainWindow.getDividerPositions()[0] > 0.99)
    {
        mainWindow.setDividerPositions(0.7);
        terminalHideShowLabel.setText("Hide Terminal");
    }
    else
    {
        mainWindow.setDividerPositions(1.0);
        terminalHideShowLabel.setText("Show Terminal");
    }
}
FXML本身:

<Label alignment="CENTER_RIGHT" contentDisplay="RIGHT" nodeOrientation="LEFT_TO_RIGHT" text="Hide Terminal" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
   <graphic>
      <ImageView fx:id="terminalHideShowButton" accessibleRole="BUTTON" onMouseClicked="#terminalHideShow" rotate="180.0">
         <image>
            <Image url="@../images/angle-right-circle.png" />
         </image>
      </ImageView>
   </graphic>
</Label>

对于if条件,如果要隐藏分隔符,分隔符的初始位置应大于0.99,并且在所附图片中,它似乎小于0.99。所以在这种情况下,你应该像这样改变if条件

if(mainWindow.getDividerPositions()[0] < 0.99)
{
     mainWindow.setDividerPositions(0.7);
     terminalHideShowLabel.setText("Hide Terminal");
}
if(mainWindow.getDividerPositions()[0]<0.99)
{
主窗口。设置分区位置(0.7);
terminalHideShowLabel.setText(“隐藏终端”);
}

我不知道你想要隐藏分隔符的标准是什么。。。所以,这样改变你的if和else语句。我刚才提到了一个例子,根据您所附的图像,我决定为了能够单击ImageView,我必须为它设置拾取边界选项,因为透明度部分是不可单击的,这是箭头图片的大部分


无论出于何种原因,当被标签对象包装时,ImageView被阻止单击。将Label和ImageView移动到单独的对象修复了主要问题,即使您仍然可以在“包装”时为它们设置操作处理程序。

您的逻辑不是在倒退吗?您有“如果分隔器位置大于0.99,请将其设置为1”(该值永远不能移动超过0.01)和“否则将其设置为0.7”。@James_D拾取效果良好,谢谢