在 Java Swing 中重置微调器值

Reseting Spinner Value in Java Swing

我了解C 编程,但我是一名新手Java 程序员,我想向您请教一个问题。如果两个微调器值都小于“1”,我会尝试将它们设置为 null,但我做不到。我在等你的帮助,谢谢。

Spinner spinnermin = new JSpinner();
    spinnermin.addFocusListener(new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent e) {
            valuemin =(Integer) spinnermin.getValue();
            if(valuemin<0){
                spinnermin.setValue(null);

            }
        }
    });
    spinnermin.setBounds(478, 215, 76, 20);
    frame.getContentPane().add(spinnermin);

    JSpinner spinnerhour = new JSpinner();
    spinnerhour.addFocusListener(new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent e) {
            valuehour = (Integer) spinnerhour.getValue();
            if(valuehour<1){
                spinnerhour.setValue(null);

            }
        }
    });
    spinnerhour.setBounds(362, 215, 86, 20);
    frame.getContentPane().add(spinnerhour);

您说:

I try to set both spinners values null if they are less then "1" but I couldn't do it.

使用不允许负值的 SpinnerNumberModel 会更好。例如,

JSpinner hourSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 24, 1));

这将创建一个 JSpinner,它允许从 1 到 24 的 int 值,并且从 1 开始。

将 null 分配给期望保存数值的组件确实没有意义,与其尝试这样做,不如限制用户输入不可接受的值的能力。另请查看 JSpinner Tutorial.

作为附带建议,虽然空布局和 setBounds() 对于 Swing 新手来说似乎是创建复杂 GUI 的最简单和最好的方法,但您创建的 Swing GUI 越多,您遇到的困难就越严重 运行 使用它们时。它们不会在 GUI 调整大小时调整您的组件的大小,它们是皇家 来增强或维护的,当放置在滚动窗格中时它们会完全失败,当在所有平台或不同的屏幕分辨率上查看时它们看起来很糟糕从原来的。