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());
}
}