gpt4 book ai didi

java - JSpinner 时间范围 + HH :MM format

转载 作者:行者123 更新时间:2023-11-30 09:13:48 25 4
gpt4 key购买 nike

我正在尝试将 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);
}
});
}

}

我发现我一次只能做这两项中的一项。设置范围或设置格式。两者都执行只会卡住组件以供用户编辑。

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

最佳答案

您的代码存在的问题是,实际上格式化程序丢弃了日期 字段并仅保留当前值的时间 部分。但随后该值不再位于 minmax 之间,这是不可更改的。

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

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();

关于java - JSpinner 时间范围 + HH :MM format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859045/

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