dateChooser设置今天的日期

时间:2020-06-29 09:48:34

标签: java swing mssql-jdbc jdatechooser jcalendar

我想在datechooser字段中自动设置今天/实际日期。我已经看过关于此的几个Stackoverflow主题,却找不到解决方法。我不想使用system.out.println();输出日期,但是我只想将其保存到数据库(MSSQL)。因此,例如,让我向您展示我的意思的照片,如果您对代码有任何疑问,我可以在此处发送,但是由于我不知道在此处输入什么代码对您有帮助,因此我将其留空。 谢谢!

enter image description here

public String getDateToString(Date d) {
    DateFormat da = new SimpleDateFormat("dd-MM-yyyy");
    return da.format(d);
}

private void tabelaSelectedIndexChange() {
    final ListSelectionModel rowSM = table.getSelectionModel();
    rowSM.addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent e) {
            if (e.getValueIsAdjusting()) {
                return;
            }

            ListSelectionModel rowSM = (ListSelectionModel) e.getSource();
            int selectedIndex = rowSM.getAnchorSelectionIndex();
            if (selectedIndex > -1) {
                Feedback f = ftm.getFeedback(selectedIndex);
                //idField.setText(p.getId().toString());
                arsyejaArea.setText(f.getArsyeja());
                dateChooser.setDate(f.getData());
                rcmb.setSelectedItem(f.getRecetaID());
                recetaCMB.repaint();
            }
        }
    });
}

private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
    try {
        int row = table.getSelectedRow();

        if (arsyejaArea.getText().trim().isEmpty() || recetaCMB.getSelectedItem() == null || dateChooser.getDate() == null) {
            JOptionPane.showMessageDialog(this, "Nuk i keni mbushur te gjitha hapesirat!");
        } else if (row == -1) {
            Feedback f = new Feedback();
            //p.setId(Integer.parseInt(idField.getText()));
            f.setArsyeja(arsyejaArea.getText());
            f.setData(dateChooser.getDate());
            f.setRecetaID((Receta) rcmb.getSelectedItem());
            fr.create(f);
        } else {
            Feedback f = ftm.getFeedback(row);
            //Id nuk e lejojm me ndryshu vetem emertimin ose fielda tjere qe mundeni me pas
            f.setArsyeja(arsyejaArea.getText());
            f.setData(dateChooser.getDate());
            f.setRecetaID((Receta) rcmb.getSelectedItem());
            fr.edit(f);
        }
        //E krijojm ni metode per me i clear fieldat mbasi ti shtojme
        clear();
        loadTable();
    } catch (CrudFormException ex) {
        JOptionPane.showMessageDialog(this, "E dhena ekziston!");
    }
}

1 个答案:

答案 0 :(得分:1)

JCalendar constructors至少包含3个变体,这些变体似乎允许设置初始或“默认”日期。如果对实现目标存在疑问,则应首先检查API的Java文档。

enter image description here


鉴于我写了这个最小的可重现示例,以使图像在上面的评论中可见,因此我还将分享如何使用JSpinner进行操作。如果没有其他用途,它演示了如何立即获得.. Date,如所有相关的JCalendar构造函数中的所有3个中所述。

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.util.*;

public class DefaultDateInSpinner {

    private JComponent ui = null;
    Date nowDate = new Date(System.currentTimeMillis()); // right NOW!
    Date endDate = new Date(System.currentTimeMillis()+1000000);
    SpinnerDateModel dateModel = new SpinnerDateModel(
            nowDate, nowDate, endDate, Calendar.NARROW_FORMAT);

    DefaultDateInSpinner() {
        initUI();
    }

    public void initUI() {
        if (ui!=null) return;

        ui = new JPanel(new BorderLayout(4,4));
        ui.setBorder(new EmptyBorder(4,4,4,4));
        
        JSpinner spinner = new JSpinner(dateModel);
        ui.add(spinner, BorderLayout.LINE_START);
    }

    public JComponent getUI() {
        return ui;
    }

    public static void main(String[] args) {
        Runnable r = () -> {
            DefaultDateInSpinner o = new DefaultDateInSpinner();
            
            JFrame f = new JFrame(o.getClass().getSimpleName());
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setLocationByPlatform(true);
            
            f.setContentPane(o.getUI());
            f.pack();
            f.setMinimumSize(f.getSize());
            
            f.setVisible(true);
        };
        SwingUtilities.invokeLater(r);
    }
}

如果无法使其在原始代码中起作用,请编辑以添加 MRE。。请注意,此示例可以复制/粘贴并运行,比包含在其中的不可编译代码段短。问题。

相关问题