diff -r 0f7d453c3931 modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ListViewSkin.java --- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ListViewSkin.java Wed May 28 15:26:29 2014 -0700 +++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ListViewSkin.java Wed May 28 15:32:36 2014 -0700 @@ -489,6 +489,17 @@ case FOCUS_ITEM: { FocusModel fm = getSkinnable().getFocusModel(); int focusedIndex = fm.getFocusedIndex(); + System.out.println("FOCUS ITEM " + focusedIndex + " " + flow.getPrivateCell(focusedIndex)); + if (focusedIndex == -1) { + if (placeholderRegion != null && placeholderRegion.isVisible()) { + return placeholderRegion.getChildren().get(0); + } + if (getItemCount() > 0) { + focusedIndex = 0; + } else { + return null; + } + } return flow.getPrivateCell(focusedIndex); } case ROW_AT_INDEX: { diff -r 0f7d453c3931 modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkinBase.java --- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkinBase.java Wed May 28 15:26:29 2014 -0700 +++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkinBase.java Wed May 28 15:32:36 2014 -0700 @@ -955,6 +955,16 @@ case FOCUS_ITEM: { TableFocusModel fm = getFocusModel(); int focusedIndex = fm.getFocusedIndex(); + if (focusedIndex == -1) { + if (placeholderRegion != null && placeholderRegion.isVisible()) { + return placeholderRegion.getChildren().get(0); + } + if (getItemCount() > 0) { + focusedIndex = 0; + } else { + return null; + } + } return flow.getPrivateCell(focusedIndex); } case CELL_AT_ROW_COLUMN: { diff -r 0f7d453c3931 modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeViewSkin.java --- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeViewSkin.java Wed May 28 15:26:29 2014 -0700 +++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeViewSkin.java Wed May 28 15:32:36 2014 -0700 @@ -480,6 +480,13 @@ case FOCUS_ITEM: { FocusModel fm = getSkinnable().getFocusModel(); int focusedIndex = fm.getFocusedIndex(); + if (focusedIndex == -1) { + if (getItemCount() > 0) { + focusedIndex = 0; + } else { + return null; + } + } return flow.getPrivateCell(focusedIndex); } case ROW_AT_INDEX: { diff -r 0f7d453c3931 modules/controls/src/main/java/javafx/scene/control/TableView.java --- a/modules/controls/src/main/java/javafx/scene/control/TableView.java Wed May 28 15:26:29 2014 -0700 +++ b/modules/controls/src/main/java/javafx/scene/control/TableView.java Wed May 28 15:32:36 2014 -0700 @@ -1625,7 +1625,12 @@ } return FXCollections.observableArrayList(selection); } - case FOCUS_ITEM: + case FOCUS_ITEM: { + Node row = (Node)super.accGetAttribute(attribute, parameters); + if (row == null) return null; + Node cell = (Node)row.accGetAttribute(attribute, parameters); + return cell != null ? cell : row; + } case CELL_AT_ROW_COLUMN: { TableRow row = (TableRow)super.accGetAttribute(attribute, parameters); return row != null ? row.accGetAttribute(attribute, parameters) : null;