2013-06-26 84 views
2

我是JavaFX的新手。我正在使用TableView並嘗試將用戶從用戶名和密碼字段輸入的數據放入表中。它只是一個測試程序。我收到下面的錯誤。JavaFx TableView error

SEVERE: javafx.scene.control.Control loadSkinClass Failed to load skin 'StringProperty [bean: TableRow[id=null, styleClass=cell indexed-cell table-row-cell], name: skinClassName, value: com.sun.javafx.scene.control.skin.TableRowSkin]' for control TableRow[id=null, styleClass=cell indexed-cell table-row-cell] 
java.lang.ClassCastException: javafx.scene.control.TableColumn cannot be cast to javafx.scene.control.TableColumn$CellDataFeatures 
    at javafx.scene.control.cell.PropertyValueFactory.call(PropertyValueFactory.java:93) 
    at com.sun.javafx.scene.control.skin.TableRowSkin.recreateCells(TableRowSkin.java:224) 
    at com.sun.javafx.scene.control.skin.TableRowSkin.<init>(TableRowSkin.java:87) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at javafx.scene.control.Control.loadSkinClass(Control.java:992) 
    at javafx.scene.control.Control.access$500(Control.java:71) 
    at javafx.scene.control.Control$12.invalidated(Control.java:920) 
    at javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:127) 
    at javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:161) 
    at com.sun.javafx.css.StyleableStringProperty.set(StyleableStringProperty.java:71) 
    at javafx.scene.control.Control$12.set(Control.java:912) 
    at com.sun.javafx.css.StyleableStringProperty.applyStyle(StyleableStringProperty.java:59) 
    at com.sun.javafx.css.StyleableStringProperty.applyStyle(StyleableStringProperty.java:31) 
    at com.sun.javafx.css.StyleableProperty.set(StyleableProperty.java:70) 
    at com.sun.javafx.css.StyleHelper.transitionToState(StyleHelper.java:902) 
    at javafx.scene.Node.impl_processCSS(Node.java:7415) 
    at javafx.scene.Parent.impl_processCSS(Parent.java:1146) 
    at javafx.scene.control.Control.impl_processCSS(Control.java:1102) 
    at com.sun.javafx.scene.control.skin.VirtualFlow.setCellIndex(VirtualFlow.java:1598) 
    at com.sun.javafx.scene.control.skin.VirtualFlow.getCell(VirtualFlow.java:1500) 
    at com.sun.javafx.scene.control.skin.VirtualFlow.getCellLength(VirtualFlow.java:1523) 
    at com.sun.javafx.scene.control.skin.VirtualFlow$3.call(VirtualFlow.java:478) 
    at com.sun.javafx.scene.control.skin.VirtualFlow$3.call(VirtualFlow.java:476) 
    at com.sun.javafx.scene.control.skin.PositionMapper.computeViewportOffset(PositionMapper.java:143) 
    at com.sun.javafx.scene.control.skin.VirtualFlow.layoutChildren(VirtualFlow.java:1001) 
    at javafx.scene.Parent.layout(Parent.java:1018) 
    at javafx.scene.Parent.layout(Parent.java:1028) 
    at javafx.scene.Parent.layout(Parent.java:1028) 
    at javafx.scene.Parent.layout(Parent.java:1028) 
    at javafx.scene.Scene.layoutDirtyRoots(Scene.java:513) 
    at javafx.scene.Scene.doLayoutPass(Scene.java:484) 
    at javafx.scene.Scene.access$3900(Scene.java:169) 
    at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2199) 
    at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:363) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:460) 
    at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(QuantumToolkit.java:329) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) 
    at java.lang.Thread.run(Thread.java:722) 
+2

給出代碼。 –

回答

8

有關其他信息。我得到了同樣的例外。我發現在設置TableColumn實例時需要調用「setCellValueFactory」方法。我錯誤地調用了「setCellFactory」。

+2

這也解決了我的問題。我錯誤地做了同樣的事情。 – Brian

+1

剛做完同樣的錯誤,非常感謝你指出這個錯字:) – elhombre

2

由於您正在指定如何填充該列的,請務必使用setCell 工廠方法。