我的TableView由几列组成,并使用以下单元工厂包装文本:
private void setWrapCellFactory(TableColumn<CustomObject, String> table) {
table.setCellFactory(tablecol -> {
TableCell<CustomObject, String> cell = new TableCell<>();
Text text = new Text();
cell.setGraphic(text);
text.wrappingWidthProperty().bind(cell.widthProperty());
text.textProperty().bind(cell.itemProperty());
return cell;
});
}
这非常适合显示不可编辑的文本。
最后一列必须是可编辑的,并且可以跨越几行(而不是TableView行)。为了防止出现省略号,我想将新编辑的文本换行。
经过数小时的尝试,我似乎仍然无法正常工作。我有以下代码来编辑单元格,并且无法进行包装。
不起作用的方法来包装我的编辑文本:
private void setWrapCellFactoryEditable(TableColumn<CustomObject, String> table) {
table.setCellFactory(tablecol -> {
TableCell<CustomObject, String> cell = new TextFieldTableCell<>(new DefaultStringConverter());
Text text = new Text();
text.setText(text.toString());
text.wrappingWidthProperty().bind(cell.widthProperty());
return cell;
});
}
以下代码是列设置:
feedbackCol.setCellValueFactory(ev -> new ReadOnlyStringWrapper(ev.getValue().getLastFeedback()));
setWrapCellFactoryEditable(feedbackCol);
feedbackCol.setOnEditCommit((CellEditEvent<CustomObject, String> ev) -> {
int id = ((CustomObject) ev.getTableView().getItems().get(
ev.getTablePosition().getRow())).getId();
dc.addTempFeedback(id, ev.getNewValue());
});
对于常规的不可编辑文本,我使用a TableCell
;对于可编辑文本,我使用a
TextFieldTableCell
。我不知道为什么包装不能在可编辑单元格中使用。
您需要创建自己的扩展类TextFieldTableCell
。编辑完成后,它应覆盖cancelEdit()
和updateItem()
更改将单元格图形更改为Text
组件的方法(等于用于不可编辑单元格的一种方法)。
public class WrappingTextFieldTableCell<S> extends TextFieldTableCell<S, String> {
private final Text cellText;
public WrappingTextFieldTableCell() {
super(new DefaultStringConverter());
this.cellText = createText();
}
@Override
public void cancelEdit() {
super.cancelEdit();
setGraphic(cellText);
}
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty() && !isEditing()) {
setGraphic(cellText);
}
}
private Text createText() {
Text text = new Text();
text.wrappingWidthProperty().bind(widthProperty());
text.textProperty().bind(itemProperty());
return text;
}
}
是否可以使可单击但不可编辑。 我不希望它是可编辑的(键盘也不应该出现,我们也不应该改变提示) 实际上,我只想使用编辑文本作为带有提示的图像(不能更改)。我知道实际的方法是使用一个和一个,但我希望它尝试使用,因为这样我将只使用一个视图,而不是2个。而且每件事都是动态的,所以没有XML。 对于上述需求,XML中的解决方案是android:editable=“false”,但我想在Java中使用它。 但
我是Yii 2的新手!我在我的基本yii中安装了kartik网格,并创建了一个没有问题的网格。现在我想用 卡地克\网格\编辑列 但它需要: \kartik\可编辑\可编辑 我安装了可编辑via composer,现在我可以在我的供应商文件中看到该目录:我的供应商文件 现在系统再次给我这个错误: 无效配置-yii\base\InvalidConfigExc0019 未找到类\kartik\edabl
任何人都可以知道如何做到这一点吗? 我想这是一个编辑文本,但是我怎么能同时放标签和文本呢? 先谢谢你
编辑文本 要选择一种文字图层,请执行下列操作之一: 选择“移动”工具 并在画布上双击文字图层。 选择横排文字工具 或竖排文字工具。在“图层”面板中选择文字图层,或者单击文本流以自动选择文字图层。 在文本中定位到插入点,然后执行下列操作之一: 单击以设置插入点。 选择要编辑的一个或多个字符。 根据需要输入文本。 要将更改应用到文字图层,请执行下列操作之一: 选择一个新工具。 在“图层”面板中单击某个
我通过。我想编辑包。它在哪里(在ubuntu 12.04上)以及如何在每次编辑源代码并运行它时重新加载它? 目前我正在编辑源代码,然后一次又一次地运行python setup.py,结果证明这很麻烦。
Ruby我已经开始在我的Ruby代码中插入不可编辑的文本,我觉得这很烦人。例如,这个简单的rSpec表达式: ...变成了这样: 另一个例子是: ...变成了这样: 如何关闭此功能?