我有定制的ListView小区i具有HBox中有两个对照:JavaFX的8自定义的ListView细胞是恶
- 标签与名称字段
- 这是从对象
的上下文例如产生绝我设置类字段的ListView的条目数组,如果场类型布尔我创建复选框,如果字符串我创建TextField和等
问题是:我只在方法的updateItem得到Field对象() - 只有我可以创建我的控件。
在JavaFX 7一切工作正常,但Java的8 - 我没有看到我的控制。
是存在的,解决我的情况下,正确的方法是什么?
UPDATE 1
用于复制问题这里完整的例子:
package javafx8listviewexample;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.Date;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.TextFieldListCell;
import javafx.util.Callback;
/**
*
* @author dmitrynelepov
*/
public class FXMLDocumentController implements Initializable {
static class TestClassForListView {
public String fieldString;
public Date fieldDate;
}
static class MyListCell extends ListCell<Field> {
/**
* As in tutorial
*
* @param t
* @param bln
*/
@Override
protected void updateItem(Field t, boolean bln) {
super.updateItem(t, bln);
if (t != null) {
if (t.getType().equals(String.class)) {
System.out.println("Draw string");
setGraphic(new TextField(t.getName()));
} else if (t.getType().equals(Date.class)) {
System.out.println("Draw Date");
setGraphic(new DatePicker());
}
}
}
}
@FXML
private ListView<Field> listView;
@FXML
private void handleButtonAction(ActionEvent event) {
this.listView.getItems().clear();
this.listView.setItems(
FXCollections.observableArrayList(
TestClassForListView.class.getFields()
)
);
}
@Override
public void initialize(URL url, ResourceBundle rb) {
this.listView.setCellFactory(new Callback<ListView<Field>, ListCell<Field>>() {
@Override
public ListCell<Field> call(ListView<Field> p) {
return new MyListCell();
}
});
}
}
这里程序JDK的屏幕截图7
如u可以看到我的TextField可以聚焦并编辑。
但是,如果我运行JDK 8这个例子中,我得到
这里可以看出U文本字段不能集中和编辑。
用于复制问题的完整最小代码对于分析非常重要。如果您需要进一步协助您的特定实施,并希望有人调查并解释为什么它不起作用,那么您需要放置代码以将编辑的问题复制为[SSCCE](http://sscce.org) )。 – jewelsea
虽然这个问题非常有用,可否请更新标题?它应该更准确地反映你对javafx8中自定义的ListCell对象的看法。 – demongolem