2014-02-19 2 views
0

Я пытаюсь построить калькулятор в JavaFX, и я хочу динамически изменять размер шрифта, когда на дисплее отображается определенное количество цифр, чтобы оно поместилось.Javafx Textfield textaligment разбивается на изменение шрифта

Это работает так, как я хочу, когда я устанавливаю выравнивание текста влево. Но это не влияет на работу, когда я использую любое выравнивание текста с правой стороны, оно выходит из строя.

Чтобы быть более конкретным, смотрите на следующих рисунках:

Это размер по умолчанию при запуске:

http://www7.pic-upload.de/19.02.14/8xjsfv1awtl1.jpg

Тогда я изменить размер шрифта:

http://www7.pic-upload.de/19.02.14/9518liqv4ebw.jpg

Вы можете видеть, что выравнивание не работает .... Но смешно часть при нажатии на текстовое поле он будет исправить себя и будет выглядеть следующим образом: (нет связи из-за репутации ограничения хрень)

www7.pic-upload.de/19.02.14/5e3ddqyt575o.jpg

Есть ли обходной путь? Вот некоторые примеры моего кода:

GUI.fxml

<TextField fx:id="display" alignment="BASELINE_RIGHT" cache="false" editable="false" layoutX="18.0" layoutY="17.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onKeyPressed="#keylistener" prefHeight="54.0" prefWidth="206.0" promptText="" styleClass="textcustom, rand, backgroundfield" text="" /> 

Application.css

.background { 
    -fx-background-color: #4682B4; 
} 
.backgroundfield { 
    -fx-background-color: #F5F5F5; 
} 
.button { 
    -fx-background-color: #FFF5EE; 
} 
.textcustom{ 
    -fx-font: 26px "Serif"; 
} 
.rand{ 
    -fx-border-style: solid; 
    -fx-border-color: black ; 
    -fx-border-width: 1px; 
} 

Java-код для изменения шрифта:

display.setStyle("-fx-font: 18px Serif;"); 
+0

Ваше текстовое поле недоступно для редактирования. Трудно сказать что-то, не видя своего клавишника. –

+0

Я не думаю, что редактируемая часть является причиной, я имею в виду, что она работает, когда выравнивание находится на левой стороне. Кроме того, я еще не реализовал его, я сначала попробовал его с помощью кнопки и получил эти результаты. Нет прослушивателя, кроме кнопки Mouseevent, которую я нажимаю, но единственный код, который он запускает, - это код, который я написал в конце. – user3327172

ответ

0

Это кажется быть ошибкой. Обходным решением может быть использование javafx.scene.control.Label вместо TextField.

+0

Я дам ему баш и отчитаюсь – user3327172

Смежные вопросы