私は、JavaFX でリッチ テキスト エディターを作成する最善の方法を調査しています。現時点での選択肢は、AnchorPane を拡張してすべてのレイアウト、ナビゲーションなどを最初から行うか、TextInputArea を拡張することです。独自の実装を持っている人や、最小限の実装を提案したい人はいますか?
FWIWここに私からのスクラップがあります:
public class TryPain3 extends TextInputControl { プライベート 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;
}
}
}
スキンはオプションではないようです。
知りたい質問は次のようなものです。
- UI はどのように描画されることになっていますか? - ゼロからコーディングできて非常に満足していますが、例として forward() への呼び出しの利点を得る方法
- UI の作成はスキンで行う必要がありますか?
- テキストの一部をクリックした場合にカーソルを置く場所などを基本クラスが処理するかどうか
このことから、他の疑問が生じると確信しています。