gpt4 book ai didi

java - 第一次设置日期时的 JDatePicker 错误

转载 作者:行者123 更新时间:2023-12-01 15:00:58 25 4
gpt4 key购买 nike

JDatePicker 是一个用于选择日期的开源 Java GUI 组件

http://sourceforge.net/projects/jdatepicker/

当我将二月设置为创建组件后的月份时,似乎存在错误。所有其他月份都正常工作。

package jat.examples.DatePicker;

import jat.jdatepicker.JDateComponentFactory;
import jat.jdatepicker.JDatePicker;

import javax.swing.JApplet;
import javax.swing.JComponent;

public class DatePickerExample extends JApplet{

private static final long serialVersionUID = 1920676464239324135L;
JDatePicker depart_date_picker;

public void init() {
depart_date_picker = JDateComponentFactory.createJDatePicker();
depart_date_picker.setTextEditable(true);
depart_date_picker.setShowYearButtons(true);

add((JComponent) depart_date_picker);

}

public void start() {

depart_date_picker.getModel().setYear(2010);
depart_date_picker.getModel().setMonth(1);
//depart_date_picker.getModel().setMonth(1);
depart_date_picker.getModel().setDay(15);
depart_date_picker.getModel().setSelected(true);
}

}

它不显示二月,而是显示三月。

在调试器中,我注意到 oldValue 为 null。

public void setMonth(int month) {
int oldMonthValue = this.calendarValue.get(Calendar.MONTH);
T oldValue = getValue();
calendarValue.set(Calendar.MONTH, month);
fireChangeEvent();
firePropertyChange("month", oldMonthValue, this.calendarValue.get(Calendar.MONTH));
firePropertyChange("value", oldValue, getValue());
}

果然,当我调用该方法两次时,它正确显示了二月。

    depart_date_picker.getModel().setMonth(1);
depart_date_picker.getModel().setMonth(1);

可能是变量初始化问题。我是否正确,有人可以解决这个问题,还是我错误地使用了该库?

最佳答案

我注意到你的包导入是jat.jdatepicker.JDatePicker,它似乎直接包含在https://sourceforge.net/p/jat的源代码库中

您使用的这个版本的 JDatePicker 是原始 JDatePicker 项目的分支。尽管开源项目并不禁止 fork ,但如果存在需要解决的问题,建议尝试并提交回原始项目。

我建议您使用该项目的最新版本 https://github.com/JDatePicker/JDatePicker

我针对 jdatepicker-1.3.4 测试了您的案例,该案例可以从中央存储库 ( https://search.maven.org/#artifactdetails%7Corg.jdatepicker%7Cjdatepicker%7C1.3.4%7Cjar ) 下载

将其包含在 Maven 中:

<dependency>
<groupId>org.jdatepicker</groupId>
<artifactId>jdatepicker</artifactId>
<version>1.3.4</version>
</dependency>

通过以下测试,最初选择了二月。

public static void main(String[] args) {
JFrame testFrame = new JFrame();
testFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
testFrame.setSize(500, 500);
JPanel jPanel = new JPanel();

JDatePicker picker = new JDateComponentFactory().createJDatePicker();
picker.setTextEditable(true);
picker.setShowYearButtons(true);
jPanel.add((JComponent) picker);

picker.getModel().setYear(2010);
picker.getModel().setMonth(1);
//picker.getModel().setMonth(1);
picker.getModel().setDay(15);
picker.getModel().setSelected(true);

JPanel datePanel = new JPanel();
datePanel.setLayout(new BorderLayout());
datePanel.add(jPanel, BorderLayout.WEST);
BorderLayout fb = new BorderLayout();
testFrame.setLayout(fb);
testFrame.getContentPane().add(datePanel, BorderLayout.WEST);
testFrame.setVisible(true);
}

关于java - 第一次设置日期时的 JDatePicker 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com