我正在研究在JavaFX中编写富文本编辑器的最佳方法 - 不要向我提及HTMLEditor:我们花了几个月的时间来讨论它并且我可以写一些关于它不适合的原因我们的宗旨!目前的选择是扩展AnchorPane并从头开始执行所有布局,导航等,或者扩展TextInputArea,看起来好像会有所帮助。任何人都有他们自己的实现或想提出一个最小的实现?
FWIW这是我的废话:
公共类TryPain3扩展TextInputControl { private AnchorPane rootNode = new AnchorPane();
public TryPain3() {
super(new Content() {
private String text = "";
@Override
public String get(int i, int i1) {
return text.substring(i, i1);
}
@Override
public void insert(int i, String string, boolean bln) {
}
@Override
public void delete(int i, int i1, boolean bln) {
}
@Override
public int length() {
return text.length();
}
@Override
public String get() {
return text;
}
@Override
public void addListener(ChangeListener<? super String> cl) {
}
@Override
public void removeListener(ChangeListener<? super String> cl) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public String getValue() {
return text;
}
@Override
public void addListener(InvalidationListener il) {
}
@Override
public void removeListener(InvalidationListener il) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
setEditable(true);
Text text1 = new Text("fred was here");
text1.setFont(Font.font("Tahoma", FontWeight.NORMAL, 18));
text1.setTextAlignment(TextAlignment.LEFT);
text1.setFontSmoothingType(FontSmoothingType.LCD);
rootNode.getChildren().add(text1);
setSkin(new TP3Skin(this, rootNode));
}
class TP3Skin implements Skin<TryPain3> {
TryPain3 tp;
Node root;
public TP3Skin(TryPain3 tp, Node root) {
this.tp = tp;
this.root = root;
}
@Override
public TryPain3 getSkinnable() {
return tp;
}
@Override
public Node getNode() {
return root;
}
@Override
public void dispose() {
tp = null;
rootNode = null;
}
}
}
看起来皮肤不是可选的。
我想知道的问题是:
我确信会有其他问题。
答案 0 :(得分:1)
您可能想尝试下一个JavaFX 8.0控件TextFlow
,它允许聚合各种文本样式。请参阅此处的示例:https://wikis.oracle.com/display/OpenJDK/Rich+Text+API+Samples
JavaFX 8是JDK8的一部分。所以你可以在这里下载开发人员http://jdk8.java.net/download.html,它将包括JavaFX和新的TextFlow控件。