Button events in ListCells not working

Daniel Opitz dfxloc at gmail.com
Thu Feb 13 22:46:12 PST 2014


Hi,

I found something that looks like a bug. When a Button is placed in a ListCell (or probably any other Cell) its onAction event is never fired and onMouseClicked very rarely and seemingly randomly. Or is it me doing things the wrong way? Using the JDK8 RC. Here is some example code:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.stage.Stage;

public class Testing extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        ObservableList<String> strings = FXCollections.observableArrayList();
        strings.addAll("text", "another");
        ListView<String> list = new ListView<>(strings);
        list.setCellFactory(cell -> new ButtonCell());
        Scene s = new Scene(list, 300, 400);
        primaryStage.setScene(s);
        primaryStage.show();
    }

    private class ButtonCell extends ListCell<String> {

        @Override
        protected void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
            if (empty) {
                setText(null);
                setGraphic(null);
            } else {
                setText(item);
                Button b = new Button("button");
                b.setOnAction(action -> System.out.println("zam"));
                b.setOnMouseClicked(action -> System.out.println("bam"));
                setGraphic(b);
            }
        }
    }
}


-- 
Daniel Opitz


More information about the openjfx-dev mailing list