我正在製作一個基本的JavaFX GUI,當我將鼠標懸停在不同類型的GUI組件上時,我想在其中更改標籤。如何更有效地使用不同類型的JavaFX GUI組件來編寫我的代碼?
例如下面,我希望我的標籤將文本從'無聊'改爲'Hovered!'。當我懸停在一個組合框,TextField,按鈕,圓等
而不是重複相同的代碼再次,我猜我可以創建一個方法與對象作爲輸入參數,但我似乎無法相當正確。
從本質上講,是否有一種優雅的方式可以適應此代碼,以便它可以重用於所有類型的不同JavaFX GUI組件?
下面的代碼目前完全符合我所描述的內容,但是我希望更有效。
謝謝。
comboBox.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.HAND);
label.setText("Hovered!");
}
});
comboBox.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.MOVE);
label.setText("Bored");
}
});
textField.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.HAND);
label.setText("Hovered!");
}
});
textField.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.MOVE);
label.setText("Bored");
}
});
button.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.HAND);
label.setText("Hovered!");
}
});
button.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.MOVE);
label.setText("Bored");
}
});
circle.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.HAND);
label.setText("Hovered!");
}
});
circle.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
label.setCursor(Cursor.MOVE);
label.setText("Bored");
}
});
嗨,fabian,這正是我所期待的,非常感謝。我並沒有最終需要使用評論的後半部分,但它提到了它的優點,因爲以後可能需要類似的東西! – LiXie