我已经创建了一个自定义的TextField(通过扩展javafx.scene.control.TextField),我使用它来存储货币值,例如$ 120,000。我叫这个类CurrencyField
和它有两个构造函数public CurrencyField()
和public CurrencyField(String currency)
我也有一个public void setCurrency(String currency)
设置货币符号的方法。人们可以通过使用new CurrencyField(currency)
出正确地设置货币或更高版本使用的setter方法设置 - setCurrency(currency)
Java属性绑定
通常情况下,我希望能够使用基于条件不同的货币符号,如(这个问题的范围之内)。我可能想通过点击按钮将货币从$换为£。在这种情况下,我希望所有CurrencyFields立即显示新货币符号的金额。
我已经知道,使用Properties
和Binding
可以用来更新一个变量,当另一个变量更新没有任何额外的方法。 现在,以更实用的方式,我希望如果我拨打setCurrency("$")
方法,具有Rs2,000的字段将立即显示$ 2,000。
我怎样才能使用属性和/或绑定或基本上任何其他方式?
我认为这可以帮助你:https://stackoverflow.com/questions/35093145/string-with-numbers-and-letters-to-double-javafx – Sunflame
假设你使用'TextField'的' text'属性来显示数字和货币符号,恐怕这是不可能的,因为任何'text'属性的绑定都会使'TextField'不可用(绑定属性不能设置)。您需要替换所有文本字段的货币符号而无需绑定。如果货币存储在一个属性中,你可以从一个监听器完成。 – fabian
不相关:不需要继承textField,而是使用TextFormatter配置textField。除此之外:我不太了解这个问题 - 你到底在徘徊什么?并且改变货币肯定会改变价值......请提供一个SSCCE来证明你在做什么以及你如何达不到它 – kleopatra