0
這個問題起初似乎很簡單,但我已經有幾天的麻煩了。檢測鼠標點擊選擇可編輯組合框JavaFX
所以,我的問題是,我想檢測鼠標點擊和選擇打開組合框選擇時,並單擊鼠標選擇選項。
那麼,什麼是應該做的是檢測在選擇鼠標點擊並同時獲得所選擇的價值,以及:
PS:我的組合框的代碼可以在這裏看到: Select JavaFX Editable Combobox text on click
隨時提出其他問題。
這個問題起初似乎很簡單,但我已經有幾天的麻煩了。檢測鼠標點擊選擇可編輯組合框JavaFX
所以,我的問題是,我想檢測鼠標點擊和選擇打開組合框選擇時,並單擊鼠標選擇選項。
那麼,什麼是應該做的是檢測在選擇鼠標點擊並同時獲得所選擇的價值,以及:
PS:我的組合框的代碼可以在這裏看到: Select JavaFX Editable Combobox text on click
隨時提出其他問題。
只需使用一個電池工廠,並註冊與細胞的處理程序:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ComboBoxMouseClickOnCell extends Application {
@Override
public void start(Stage primaryStage) {
ComboBox<String> combo = new ComboBox<>();
combo.getItems().addAll("One", "Two", "Three");
combo.setCellFactory(lv -> {
ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? null : item);
}
};
cell.setOnMousePressed(e -> {
if (! cell.isEmpty()) {
System.out.println("Click on "+cell.getItem());
}
});
return cell ;
});
Scene scene = new Scene(new StackPane(combo), 300, 180);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我得到的Lambda表達式不會在該語言級別的錯誤的支持。 –
@EerikMuuli然後配置您的IDE,以便使用Java 8,或將lambda表達式轉換爲類。 –
謝謝!它非常完美! –