3

の問題に直面していJSpinnerます。スピナーで時間の形式を使用します"hh:mm:ss,msmsms"。スピナー形式を選択せず​​にマウスで時間を増やすと、時間、分、秒、ミリ秒などの時間の一部を選択していないことを意味します-時間のデフォルト選択として常に時間を増やします。

マウスを使用して時間を増減するときに、このデフォルトの選択を2番目の手段に与えたいと思います。これは、秒の部分で機能します。

例えば

01:05:08,102

スピナーアップ状態をクリックすると、次の時間になります。

01:05:09,102

これはコードです:

Start_time_jSpinner = new javax.swing.JSpinner();
Start_time_jSpinner.setModel(new SpinnerDateModel());
Start_time_jSpinner.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
Start_time_jSpinner.setEditor(new JSpinner.DateEditor(Start_time_jSpinner,   "HH:mm:ss,SSS"));
4

1 に答える 1

4

「時間」フィールドが選択されていても、値は上下の矢印で一度に 1 秒ずつ増減します。

import java.util.Date;
import javax.swing.*;

public class SecondIncrement {

    SecondIncrement() {
        JSpinner spinner = new JSpinner();
        SpinnerDateModel dateModel = new SpinnerDateModel(){
            @Override 
            public Object getNextValue() {
                Date date = this.getDate();
                long millis = date.getTime();
                return new Date(millis+1000);
            }

            @Override 
            public Object getPreviousValue() {
                Date date = this.getDate();
                long millis = date.getTime();
                return new Date(millis-1000);
            }
        };
        spinner.setModel(dateModel);
        spinner.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        spinner.setEditor(new JSpinner.DateEditor(spinner, "HH:mm:ss,SSS"));
        JOptionPane.showMessageDialog(null, spinner);
    }

    public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new SecondIncrement();
            }
        });
    }
}
于 2012-06-08T14:42:09.010 に答える