javaFX TableCell with event -
what correct way add eventhander tablecell?
at first had these 2 lines
@fxml private tablecolumn eancol; ... eancol.setcellvaluefactory(new propertyvaluefactory<myrow, string>("ean")); and worked until tried adding event
eventhandler eh = new eventhandler<mouseevent>(){ @override public void handle(mouseevent mouseevent) { if(mouseevent.getbutton().equals(mousebutton.primary)){ if(mouseevent.getclickcount() == 2){ system.out.print("double clicked "); system.out.println(mouseevent.gettarget().tostring()); } } } }; eancol.setcellfactory(new callback<tablecolumn, tablecell>() { @override public tablecell call(tablecolumn p) { tablecell cell = new tablecell(); cell.setonmouseclicked(eh); return cell; } }); problem: can double click on it, whole column empty, null value.
a table cell created default constructor doesn't in updateitem(...) method cause displayed. there default_cell_factory defined in tablecolumn represents factory generating "default" table cells (i.e. displaying string version of content). if want default behavior event handler added can do:
eancol.setcellfactory(new callback<tablecolumn<?,?>, tablecell<?,?>>() { @override public tablecell call(tablecolumn<?,?> p) { tablecell<?,?> cell = tablecolumn.default_cell_factory.call(p); cell.setonmouseclicked(eh); return cell; } });
Comments
Post a Comment