Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFXListView为文本着色_Java_Listview_Javafx - Fatal编程技术网

JavaFXListView为文本着色

JavaFXListView为文本着色,java,listview,javafx,Java,Listview,Javafx,我有一个简单的代码: public class ControllerList { @FXML ListView listView; @FXML Button btnSend; @FXML ColorPicker colorPicker; @FXML TextField textField; public void clickSend() { listView.getItems().add(textField.getText()); } } 我需要使用颜色选择器为添加

我有一个简单的代码:

public class ControllerList {
@FXML ListView listView;
@FXML Button btnSend;
@FXML ColorPicker colorPicker;
@FXML TextField textField;

  public void clickSend() {
      listView.getItems().add(textField.getText());
  }
}   
我需要使用颜色选择器为添加到ListView的文本着色。
如何才能做到这一点?

创建一个类来封装文本和颜色:

public class ColoredText {

    private final String text ;
    private final Color color ;

    public ColoredText(String text, Color color) {
        this.text = text ;
        this.color = color ;
    }

    public String getText() {
        return text ;
    }

    public Color getColor() {
        return color ;
    }
}
然后对单元格工厂使用
列表视图

public class ControllerList {

    @FXML ListView<ColoredText> listView;
    @FXML Button btnSend;
    @FXML ColorPicker colorPicker;
    @FXML TextField textField;

    public void initialize() {
        listView.setCellFactory(lv -> new ListCell<ColoredText>() {
            @Override
            protected void updateItem(ColoredText item, boolean empty) {
                super.updateItem(item, empty);
                if (item == null) {
                    setText(null);
                    setTextFill(null);
                } else {
                    setText(item.getText());
                    setTextFill(item.getColor());
                }
            }
        });
    }

    public void clickSend() {
        listView.getItems().add(new ColoredText(textField.getText(), colorPicker.getValue()));
    }

}   
公共类控制器列表{
@FXML ListView ListView;
@FXML按钮BTN发送;
@FXML颜色选择器颜色选择器;
@FXML文本字段文本字段;
公共无效初始化(){
setCellFactory(lv->new ListCell()){
@凌驾
受保护的void updateItem(ColoredText项,布尔空){
super.updateItem(项,空);
如果(项==null){
setText(空);
setTextFill(null);
}否则{
setText(item.getText());
setTextFill(item.getColor());
}
}
});
}
公共作废点击发送(){
添加(新的ColoredText(textField.getText(),colorPicker.getValue());
}
}