リストビューのアイテムを更新する際に問題があります。リストビューのフォントの色を数字で変更しようとしています。JavaFx ListView <Float>すべてのアイテムのフォントの色を設定します
数が< 6.0である場合、私は意味し、特定のアイテムのフォントの色は、それ以外の場合は緑色であるべきである、赤でなければなりません。 ここに私が試したコードです: スタックトレース
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at main.Controller$ColoredCell.updateItem(Controller.java:88)
at main.Controller$ColoredCell.updateItem(Controller.java:83)
at javafx.scene.control.ListCell.updateItem(ListCell.java:480)
at javafx.scene.control.ListCell.access$300(ListCell.java:72)
at javafx.scene.control.ListCell$4.invalidated(ListCell.java:299)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:111)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
at javafx.scene.control.ListCell.setListView(ListCell.java:305)
at javafx.scene.control.ListCell.updateListView(ListCell.java:494)
at com.sun.javafx.scene.control.skin.ListViewSkin.createCell(ListViewSkin.java:292)
at com.sun.javafx.scene.control.skin.ListViewSkin.lambda$new$366(ListViewSkin.java:99)
at com.sun.javafx.scene.control.skin.VirtualFlow.getCell(VirtualFlow.java:1777)
at com.sun.javafx.scene.control.skin.VirtualFlow.getCellLength(VirtualFlow.java:1879)
at com.sun.javafx.scene.control.skin.VirtualFlow.computeViewportOffset(VirtualFlow.java:2528)
at com.sun.javafx.scene.control.skin.VirtualFlow.layoutChildren(VirtualFlow.java:1189)
at javafx.scene.Parent.layout(Parent.java:1087)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Scene.doLayoutPass(Scene.java:552)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2397)
at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:354)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:381)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:510)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
at java.lang.Thread.run(Thread.java:745)
プロセスが終了コードで終了し
public void loadMarksListView(String key){
ObservableList<Float> items = FXCollections.observableArrayList();
items.addAll(subjectsMarks.get(key));
marksListView.setItems(items);
marksListView.setCellFactory(new Callback<ListView<Float>, ListCell<Float>>() {
@Override
public ListCell<Float> call(ListView<Float> param) {
return new ColoredCell();
}
});
}
static class ColoredCell extends ListCell<Float>{
@Override
public void updateItem(Float number, boolean empty) {
super.updateItem(number, empty);
if (Float.parseFloat(number.getClass().toString()) < 6.0f){
this.setTextFill(Color.RED);
}
else{
this.setTextFill(Color.GREEN);
}
}
}
EDITは0
なぜ 'Float.parseFloat(number.getClass()。toString())'を使用していますか? 'number.getClass()。toString()'の出力は文字列形式の 'class java.lang.Float'で、' Float.parseFloat() 'メソッドを使用すると' NumberFormatException'がスローされます。 。たぶんそれはエラーです: 'if(number <6.0f)'と書くだけです。 – aleb2000
それはエラーですが、それは考えて動作しません、スタックトレースは、nullポインタの例外があると言います。 –
スタックトレースも投稿できますか? – aleb2000