我看到一些奇怪的行爲,其中javafx.scene.control.TextField
的首選寬度在調用setPrefColumnCount
後未被正確計算。我的具體使用案例是針對javafx.scene.control.Spinner
控件。我的代碼如下:JavaFX TextField.setPrefColumnCount()不起作用
@FXML
private Spinner<Integer> mySpinner;
@Override
public void initialize(URL location, ResourceBundle resources) {
mySpinner.getEditor().setPrefColumnCount(3);
}
執行上面之後,我得到一個微調是勉強足夠大的單個字符(微調值在999如圖):
有沒有人知道基於我想要顯示的位數來設置TextField
的寬度的正確方法?我在Windows 7 Enterprise SP1 x64上使用JRE 8u77,以防萬一。
編輯
我已經意識到了問題的一部分是,即使我通過測量說明here的文字,我仍然不知道如何設置Spinner.prefWidth
來。另外,看起來在底層的TextField
編輯器上設置prefWidth
與將其設置在Spinner
對象上沒有區別。有什麼方法可以獲得TextField.padding
屬性(在initialize
方法中返回0,即使它最終在每邊都設置爲7)?如何查詢向上/向下箭頭的寬度?如果我能以某種方式計算/查詢這些值,那麼我可以使用度量文本技術。然而,如果沒有這些信息,我無法弄清楚如何去做。
該屬性從來沒有爲我工作,無論是。我通過使用不同的方法來確定相對顯示比例。我創建了一個類似於css中的em值的變量。 'final static double em = Math.print(new Text(「」)。getLayoutBounds()。getHeight());'然後我通過使用乘數將它用作相對寬度和高度的基礎。 'navButtons.setButtonMinWidth(5 * em);' – RonSiven
我試圖做一些基於[測量文本](http://stackoverflow.com/a/13020490/960115),包含所需數量的零字符。但是,在「Spinner」對象的特定情況下,我正在努力應用該測量。看起來設置底層'TextField'的'prefWidth'也必須考慮到'padding'屬性(在'initialize'方法中返回0,即使它最終會變成7)以及向上/向下按鈕寬度我似乎無法得到)。 –