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