【问题标题】:JSpinner time range + HH:MM formatJSpinner 时间范围 + HH:MM 格式
【发布时间】:2013-12-31 14:53:29
【问题描述】:

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

 }

我发现我一次只能做 2 个中的一个。设置范围或设置格式。两者都做只会冻结组件以供用户编辑。

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

【问题讨论】:

  • 1) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 2)请不要忘记添加“?”提问!有些人在页面中搜索“?”如果“问题”中不存在,则直接转到下一个(实际)问题。我在..question 中添加了一个问题。请仔细检查并在必要时进行更改。

标签: java swing jspinner


【解决方案1】:

您的代码的问题在于,实际上格式化程序丢弃了 date 字段并仅保留当前值的 time 部分。但随后该值不再介于 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();

【讨论】:

  • 您的答案是正确的(我很确定),但日期应该使用日历派生,而不是不推荐使用的日期构造函数。例如,Calendar cal = Calendar.getInstance(); cal.set(1970, Calendar.JANUARY, 1, 2, 0); Date date = cal.getTime();
  • @VGR 当然你是对的。更改了代码以反映您的评论(但不要忘记致电clear)。
  • 请再问一个问题,在执行完以上所有操作后,您知道如何将 jspinner 的焦点设置为分钟而不是小时吗? (意思是,按向上按钮会增加分钟而不是小时)
  • 好的,关于焦点问题我在stackoverflow.com/questions/16470613/…找到了答案
猜你喜欢
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多