我正在使用JCalendar,并使用PropertyChangeListener设置了一个侦听器。我的问题是,此侦听器将不会响应当前的事件,因为属性中没有任何更改。我希望它能够回应选择今天的日期,因为日历导致日记。当我打开的时候,我仍然希望日历在“今天的”日期上打开,但是要有一个听众来响应按下“今天的”日期。侦听器的代码如下:
final JCalendar calendar = new JCalendar();
calendar.getDayChooser().addPropertyChangeListener("day", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent e) {
if(Calendar.AddJob!=1){
JOptionPane.showMessageDialog(null,"No Entry Found");
frame.dispose();
String date = EditDate(calendar.getDate().toString());
WorkDiary.WorkDiaryGui(date);
}
if(Calendar.AddJob==1){
String date = EditDate(calendar.getDate().toString());
Calendar.AddJob=0;
frame.dispose();
WorkDiaryAddJob.WorkDiaryAddJobGui(CalReg, date);
}
}
});发布于 2014-10-15 11:42:39
我的问题是,此侦听器将不会响应当前的事件,因为属性中没有任何更改。
您的假设是正确的:如果您按下非常选定的一天(即今天)的按钮,则日期选择器不会触发日期属性更改。这是有意义的,因为实际上,财产并没有改变。
我希望它能够回应选择今天的日期,因为日历导致日记。
要修改上述行为,可以使用setAlwaysFireDayProperty(布尔型alwaysFire)方法强制日期选择器始终触发属性更改事件:
JCalendar calendar = new JCalendar();
JDayChooser dayChooser = calendar.getDayChooser();
dayChooser.setAlwaysFireDayProperty(true); // here is the key
dayChooser.addPropertyChangeListener("day", ...);注意:这在这个答案中也有解释。
发布于 2014-10-07 05:43:27
我认为你应该添加一个ActionListener而不是PropertyChangeListener.
请参阅http://max-server.myftp.org/jcalendar/ibuild/dist/doc/api/com/toedter/calendar/JDayChooser.html#actionPerformed%28java.awt.event.ActionEvent%29
上面写着:"JDayChooser是全天按钮的ActionListener“(在ActionListener上)
calendar.getDayChooser().addActionListener(new ActionListener(){
...
};https://stackoverflow.com/questions/26226986
复制相似问题