Я использую TextField
, чтобы отобразить путь к каталогу, который открыл пользователь в моем приложении.JavaFX TextField: как «автоматически прокручивать» вправо при переполнении текста
В настоящее время, если путь не может поместиться внутри TextField
, при фокусировке далеко/щелкает от этого контроля, он выглядит так, как будто путь стал усеченным:
Я хочу поведение TextField
установлено таким образом, что, когда я фокусируюсь от него, путь, показанный внутри, автоматически прокручивается вправо, и пользователь может видеть каталог, который они открыли. То есть что-то вроде этого:
Как я могу добиться этого? Я попытался адаптировать ответ, данный от here
следующим образом в initialize()
метода в моем классе FXML Controller
:
// Controller class fields
@FXML TextField txtMoisParentDirectory;
private String moisParentDirectory;
// ...
txtMoisParentDirectory.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldStr, String newStr) {
moisParentDirectory = newStr;
txtMoisParentDirectory.selectPositionCaret(moisParentDirectory.length());
txtMoisParentDirectory.deselect();
}
});
Однако это не работает.
Благодарим за помощь - любая конкретная причина, по которой вы использовали «Ярлык»? В моем 'ChangeListener' (см. Вопрос) я добавил' location = newStr.length(); 'где' location' - поле, указанное точно так же, как в вашем коде. Я также добавил 'сфокусированныйProperty'' ChangeListener', как и у вас, но во время работы он, похоже, не работает. Вы можете попробовать с помощью «TextField» вместо «Label»? Я знаю, что это не должно иметь значения, и все, но это просто для ясности. –
Я удалил «Ярлык», не нужно было выглядеть, я обновил свой код, и он не работает в вашем коде, поэтому я добавил 'Platform.runLater()'! –
Правильно, это работает как шарм! Спасибо :) –