JavaFX 2 で、startEdit() メソッドをオーバーライドしてフォーカスを要求するカスタム TableCell を作成しました。そのため、セルで編集コマンドを呼び出すとすぐに、表示される編集テキスト フィールドがフォーカスされます。
次のステップは、キャレット位置をテキスト フィールドの末尾に設定することです。しかし、理由は不明ですが、うまくいかないようです。常に 1 番目の文字の前に配置されます。
これが私がこれまでに試したことです:
public void startEdit() {
if (!isEmpty()) {
super.startEdit();
createTextField();
setText(null);
textField.end();
setGraphic(textField);
((TextField)getGraphic()).end();
textField.end();
Platform.runLater(
new Runnable() {
@Override
public void run() {
getGraphic().requestFocus();
}
});
}
}
public void startEdit() {
if (!isEmpty()) {
super.startEdit();
createTextField();
setText(null);
setGraphic(textField);
textField.end();
Platform.runLater(
new Runnable() {
@Override
public void run() {
getGraphic().requestFocus();
textField.end();
((TextField)getGraphic()).end();
}
});
}
}
public void startEdit() {
if (!isEmpty()) {
super.startEdit();
createTextField();
setText(null);
textField.end();
setGraphic(textField);
((TextField)getGraphic()).end();
getGraphic().requestFocus();
((TextField)getGraphic()).end();
textField.end();
}
}
論理的なアプローチは、テキスト フィールドにフォーカスをリクエストしてからキャレットを移動することですが、いずれの理由でも機能しないようです。
多分誰かが私を啓発することができますか?