【问题标题】:dateChooser set todays date [closed]jdateChooser 设置今天的日期 [关闭]
【发布时间】:2020-06-29 09:48:34
【问题描述】:

我想在日期选择器字段中自动设置今天/实际日期。我查看了几个关于此的 Stackoverflow 主题,但找不到完成此操作的方法。我不想用system.out.println(); 输出日期,但我只想将它保存到数据库(MSSQL)。因此,例如,让我向您展示我的意思的照片,如果您对代码有任何疑问,我可以将其发送到这里,但是由于我不知道放在这里的代码对您有帮助,所以我将其留空。 提前谢谢您!

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!");
    }
}

【问题讨论】:

  • 你的问题有点令人困惑,因为首先你说你想在 UI 中显示当前日期和时间,但你说你只是想把它保存到数据库中。这里有什么问题?获取日期,将其打印到 UI 或将其保存到数据库?如果它正在获取日期,调用方法LocalDateTime.now() 将返回一个对象LocalDateTime,格式为“yyyy-MM-dd+T+HH:mm:ss.ms”,您可能希望使用DateTimeFormatter 对其进行格式化.
  • @yur 所以问题是我无法让日期显示在 dateChooser 中,如您在上面看到的(数据)。 dateChooser 字段为空,所以我只想在有人打开此表单时显示实际的 PC 时间。我希望这能说清楚。
  • 您的“dateChooser”使用的是什么组件?一个简单的 JTextField 或更复杂的东西,比如 JCalendar?
  • “如果您对代码有任何疑问” 是的。你的minimal reproducible example 是什么?这将告诉我 20 件我懒得问的事情。
  • 顺便说一句 - 从那时起,我决定了解do in a JSpinner 是多么容易。 (检查手表)很容易..

标签: java swing mssql-jdbc jdatechooser jcalendar


【解决方案1】:

JCalendar constructors 至少包含 3 个变体,它们似乎允许设置初始日期或“默认”日期。当有关于实现目标的问题时,应该首先检查 API 的 Java 文档。


鉴于我编写了这个最小的可重现示例以使图像在上面的评论中看到,我还将与JSpinner 分享如何做到这一点。如果没有其他用处,它演示了如何获取 .. 现在Date,正如所有 3 个相关的 JCalendar 构造函数中提到的那样。

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。 另请注意,此示例可以复制/粘贴并运行,比不可编译的代码 sn-ps 短包含在问题中。

【讨论】:

猜你喜欢
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多