gpt4 book ai didi

java - 我如何通知用户他输入的值已被限制为 JSpinner 下限?

转载 作者:行者123 更新时间:2023-12-02 06:22:36 25 4
gpt4 key购买 nike

如果用户输入的值超出范围,我需要显示错误消息并且不更改微调器的值。

如果使用微调按钮,则没有问题。但是,如果用户键入低于下界的数字,微调器会自动将其设置为下界值。这可能很好,但我需要确保用户知道。

SpinnerNumberModel spin = new SpinnerNumberModel(10, 10, 100, 5);
mySpin = new JSpinner();
mySpin.setModel(spin);

如果用户输入 3,微调器将设置为 10。但我需要与用户确认这就是他想要的。

EDIT 1

我对 TIM B 的建议进行了编码。

当我使用微调按钮更改值时,我得到 JOptionPane。但如果我手动编辑该字段,它不会被触发。

    import javax.swing.JOptionPane;
import javax.swing.SpinnerNumberModel;

public class MySpinnerNumberModel extends SpinnerNumberModel{
public MySpinnerNumberModel(int def, int start, int end, int increment){
this.setValue(def);
this.setMinimum(start);
this.setMaximum(end);
this.setStepSize(increment);
}

public void setValue(Object value) {
JOptionPane.showMessageDialog(null,"VALUE: "+value);
super.setValue(value);
if (value instanceof Integer) {
int v = (Integer)value;
//JOptionPane.showMessageDialog(null,"VALUE: "+v);
// Check v here and act as appropriate
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
}
}

最佳答案

您可以提供您自己的强制边界类的实现,并从中显示您的弹出窗口。我想不出任何方法可以从标准类中立即完成此操作,但实现您自己的模型非常简单。

JSpinner:

http://docs.oracle.com/javase/7/docs/api/javax/swing/JSpinner.html

下面有一个 SpinnerModel:

http://docs.oracle.com/javase/7/docs/api/javax/swing/SpinnerModel.html

您可能正在使用 SpinnerNumberModel:

http://docs.oracle.com/javase/7/docs/api/javax/swing/SpinnerNumberModel.html

不要使用默认的方法,而是创建自己的子类并覆盖 setValue 方法:

http://docs.oracle.com/javase/7/docs/api/javax/swing/SpinnerNumberModel.html#setValue%28java.lang.Object%29

调用super.setValue(),然后如果值太低则显示警告消息。

class MySpinnerNumberModel extends SpinnerNumberModel {
// You will need to implement the constructors too

public void setValue(Object value) {
super.setValue(value);
if (value instanceof Integer) {
int v = (Integer)value;
// Check v here and act as appropriate
}
}
}

关于java - 我如何通知用户他输入的值已被限制为 JSpinner 下限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com