【问题标题】:Create a numeric text box in java Swing with increment and decrement buttons在Java Swing中创建一个带有递增和递减按钮的数字文本框
【发布时间】:2011-06-22 06:15:11
【问题描述】:

如何在 java swing 中创建一个数字文本框,它有两个按钮(向上和向下),分别递增和递减文本框中的值。此外,此文本框必须可以使用 ONLY NUMERIC VALUES 进行编辑。像这样的

我尝试在文本框附近放置两个按钮并手动执行按钮单击操作。

是否有任何其他方法可以让我以更好的方式做到这一点,并获得与第一张图片相似的结果。

谢谢:)

【问题讨论】:

    标签: java swing textbox numeric


    【解决方案1】:

    使用JSpinner

    How to use Spinners in java


    根据您的评论:

    SpinnerModel model = new SpinnerNumberModel(9.9, 1, 15, 0.1);     
    JSpinner spinner = new JSpinner(model);
    

    【讨论】:

    • 这可以用于以 0.1 的步长递增和递减吗,因为当我以另一种方式实现时,float 给出了类似的东西,9.8000000000007 当从 9.9 递减时和类似的问题
    • 为此使用SpinnerNumberModel。提供 0.1 步长,使其改变值 0.1。
    【解决方案2】:

    JSpinner 需要只允许数字输入,在其模型中需要一些 hack,但你的第二个。图片看起来像两个JButtons(带有JButton#setFocucPainted(false))和一个带有数字格式的JFormattedTextField,带有min/maxDecimalPaces,带有roundingMode

    myDoubleFormat.setMinimumFractionDigits(2);
    myDoubleForma.setMaximumFractionDigits(2);
    myDoubleForma.setRoundingMode(RoundingMode.HALF_UP);
    

    然后Action 来自JButton 将是

    myFtdTextField.setValue(((Number) myFtdTextField.getValue()).doubleValue() +/- 0.1)
    

    【讨论】:

    • 实际上我需要创建类似于第一个图像的东西,因为我不知道如何,我使用两个按钮和一个文本框手动完成了它。但认为 JSpinner 成功了.. :) 谢谢 :)
    • @Balanivash 不客气 :-) 替代方案总是存在的,关于我的帖子,没人知道...,但是对于 JSinner,你必须实施这个技巧,仔细阅读 forums.oracle.com/forums/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2011-09-04
    相关资源
    最近更新 更多