[英]Focus Listener for JavaFX Nodes
我是JavaFX的初學者。 我真的被困在這一點上。 :(對不起,如果我的英語很差。
我的JavaFX程序中有兩個堆棧窗格。 我想為這兩個堆棧窗格添加一個焦點監聽器。
它應該是這樣的,當我點擊一個堆棧窗格時,它應該激活此堆棧窗格的焦點獲取方法。
一旦我點擊另一個堆棧窗格,第一個堆棧窗格應該調用它的焦點丟失方法,並且應該調用當前堆棧窗格的focus gain方法。 就像我們在Swing包中有焦點事件一樣。
目前我試過這個:
stackPane.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue.booleanValue()) {
focusGained(stackPane);
} else {
focusLost(stackPane);
}
}
});
private void focusGained(StackPane stackPane){
System.out.println("Focus Gained.");
}
private void focusLost(StackPane stackPane){
System.out.println("Focus Lost.");
}
我還嘗試在堆棧窗格上設置焦點遍歷屬性,即
stackPane.setFocusTraversable(true);
這些都不能正常工作。 當我運行它時,輸出只顯示這3行,無論我點擊堆棧窗格多少次。
Focus Gained.
Focus Lost.
Focus Gained.
請幫忙。
嗯,這有點晚了,但它可能對其他人有所幫助。 這很好用:
root.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
focusState(newValue);
});
private void focusState(boolean value) {
if (value) {
System.out.println("Focus Gained");
}
else {
System.out.println("Focus Lost");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.