Java JSpinner时间范围+;HH:MM格式

Java JSpinner时间范围+;HH:MM格式,java,swing,jspinner,Java,Swing,Jspinner,我正在尝试将JSpinner设置为从00:00运行到02:00 因此,我构建了以下代码: import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; public class HourSpinner2 extends javax.swing.JFrame { javax.swing.JSpinner jSpinner2; public HourSpinner2() { jSpinn

我正在尝试将
JSpinner
设置为从00:00运行到02:00

因此,我构建了以下代码:

import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;


public class HourSpinner2 extends javax.swing.JFrame {


    javax.swing.JSpinner jSpinner2;

    public HourSpinner2() {

        jSpinner2 = new javax.swing.JSpinner();
        add(jSpinner2);

// Option 1 : set range

jSpinner2.setModel(new SpinnerDateModel(new java.util.Date(1388498400000L), new java.util.Date(1388484000000L), new java.util.Date(1388505600000L), java.util.Calendar.MINUTE));

//  Option 2 : set HH:mm format 

jSpinner2.setModel(new SpinnerDateModel(new java.util.Date(1388498400000L), null, null, java.util.Calendar.MINUTE));
            JSpinner.DateEditor de = new JSpinner.DateEditor(jSpinner2, "HH:mm");
            de.getTextField().setEditable( false );
            jSpinner2.setEditor(de);

    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new HourSpinner2().setVisible(true);
            }
        });
    }

 }
我发现我一次只能做这两件事中的一件。设置范围或设置格式。这两种操作都将简单地冻结组件以供用户编辑


如何使其同时适用于范围和格式?

代码的问题是,格式设置程序实际上丢弃了日期字段,只保留当前值的时间部分。但是,该值不再位于最小值和最大值之间,并且这是不可更改的

作为一种简单的解决方法,您可以在以下代码中指定
min
max
值:

Calendar cal1 = GregorianCalendar.getInstance();
cal1.clear();
cal1.set(1970, Calendar.JANUARY, 1, 0, 0);
Date min = cal1.getTime();

Calendar cal2 = GregorianCalendar.getInstance();
cal2.clear();
cal2.set(1970, Calendar.JANUARY, 1, 2, 0);
Date max = cal2.getTime();

1) 对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。2) 请不要忘记在问题中添加“?”!有些人在页面中搜索“?”,如果“问题”中不存在,则直接转到行中的下一个(实际)问题。我在…问题上加了一个问题。请仔细阅读并在必要时进行更改。您的答案是正确的(我很确定),但日期应该使用日历派生,而不是不推荐的日期构造函数。例如,
Calendar cal=Calendar.getInstance();校准集(1970年,日历1月1日、2日、0日);Date-Date=cal.getTime()@VGR你当然是对的。更改代码以反映您的评论(但不要忘记调用
clear
)。执行所有上述操作后,请再问一个问题,您是否知道如何将jspinner焦点设置为分钟而不是小时?(意思是,按向上键会增加分钟而不是小时)好的,关于焦点问题,我找到了答案