1

このコードを使用して、現在の日付と翌日の日付を JComboBox に入れようとしています

private void dateCombo(){
    Calendar cal = new GregorianCalendar();
    int month =cal.get(Calendar.MONTH);
    int year =cal.get(Calendar.YEAR);
    int day =cal.get(Calendar.DAY_OF_MONTH);
    cmb_date.addItem(+year+"-"+(month+1)+"-"+day);
    cmb_date.addItem(+year+"-"+(month+1)+"-"+(day+1));
}

しかし、日付が「yyyy-md」形式で表示されており、「yyyy-mm-dd」形式で表示したいのです。

使えると思います

Date date = new Date();
SimpleDateFormat  sdf = new SimpleDateFormat("yyyy/MM/dd");
txt_date.setText(sdf.format(date));

「yyyy-mm-dd」形式で現在の日付を取得するには、次の日の日付についてはどうすればよいですか?

4

3 に答える 3

5
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1); //next day
cal.getTime(); // next day's date  

yyyy-MM-ddそして、あなたはあなたの望むフォーマットのためにフォーマットを変える必要があります

于 2013-02-10T00:13:53.943 に答える
2

現在の日付と翌日の日付の文字列の代わりに日付オブジェクトを JComboBox に追加し、カスタマイズされたListCellRendererを使用して日付を目的の形式でレンダリングする必要があります。

サンプルコード:

import java.awt.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;


public class DateComboExample {

    // Create Date Renderer for formatting Date
    public static class DateComboBoxRenderer extends DefaultListCellRenderer {

        // desired format for the date
        private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) {
            Object item = value;

            // if the item to be rendered is date then format it
            if( item instanceof Date ) {
                item = dateFormat.format( ( Date ) item );
            }
            return super.getListCellRendererComponent( list, item, index, isSelected, cellHasFocus);
        }
    }

    public static void main( String[] str ) {
        JComboBox combo = new JComboBox();

        // Add current date
        GregorianCalendar calendar = new GregorianCalendar();
        combo.addItem( calendar.getTime() );

        // Add Next date
        calendar.roll( GregorianCalendar.DAY_OF_MONTH, 1 );
        combo.addItem( calendar.getTime() );

        // Set Renderer for formating the date in combobox
        combo.setRenderer( new DateComboBoxRenderer() );

        JFrame frame = new JFrame( "Date Rendere Example" );

        JPanel panel = new JPanel();
        panel.add( new JLabel( "Date Combo: ") );
        panel.add( combo );

        frame.add( panel );
        frame.pack();
        frame.setVisible( true );
    }

}
于 2013-02-10T03:23:07.993 に答える
0

通常、文字列をJComboBoxに追加することはありません。代わりに、目的のタイプ (この場合はDate ) のメンバーを含むデータ オブジェクトを定義し、 toStringメソッドをオーバーライドして、 JComboBoxでの表示方法を決定します。

public class DateItem {

    private Date mDate;

    public DateItem(Date date) {
        mDate = date;
    }

    public Date getDate() {
        return mDate;
    }

    @Override
    public String toString() {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

        return sdf.format(mDate);
    }
}

これで、Jigar Joshi が回答で示したパターンに従って、必要なすべての日を JComboBox に挿入できます。ここでは、合計で 4 週間追加するために使用しています。

JComboBox cb = new JComboBox();

Calendar calendar = Calendar.getInstance();

for (int i = 0; i < 28; ++i) {
    cb.addItem(new DateItem(calendar.getTime()));
    calendar.add(Calendar.DATE, 1);
}

データ オブジェクトを使用する利点は、文字列表現ではなく、選択した日付をJComboBoxから簡単に取得できることです。

DateItem di = (DateItem)cb.getSelectedItem();
Date d = di.getDate();
于 2013-02-10T00:38:04.270 に答える