禁用日期JDates Chooser

时间:2014-09-25 21:47:45

标签: java swing jcalendar

我是新手,我想禁用this example中显示的日期,但需要JDateChooser按钮。这是我的代码,希望你们能帮助我。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

RangeEvaluator evaluator = new RangeEvaluator();
evaluator.setStartDate(dateFormat.parse("2013-09-14"));
evaluator.setEndDate(dateFormat.parse("2013-09-23"));


JDateChooser calendar = new JDateChooser();
calendar.getCalendar.(evaluator);
// evaluator must be added to a JDayChooser object 

calendar.setSize(180, 25); 
calendar.setLocation(140, 640);
calendar.setVisible(true);
calendar.updateUI();
this.add(calendar);

1 个答案:

答案 0 :(得分:2)

让我们从您的问题开始:如何将IDateEvaluator添加到JDateChooser这是一个非常容易解决的问题,但您必须首先了解API :

  • JDayChooser是一个面板,每个月的每一天都有按钮 以表格形式显示。
  • JCalendar组件嵌入了JDayChooser并添加了 能够改变年份和月份,更新日期选择器。
  • 当您按下选择按钮时,
  • JDateChooser会在弹出窗口中显示JCalendar

所以你基本上需要获得JDayChooser组件的引用并添加这样的日期评估器:

RangeEvaluator evaluator = new RangeEvaluator();
...
JDateChooser dataChooser = new JDateChooser();
dateChooser.getJCalendar().getDayChooser().addDateEvaluator(evaluator);

其他评论

  • 请注意this answer中描述的错误行为。您 应在添加日期后明确设置当前日期 评估人员来解决这个问题。

  • 您不应该明确地调用任何updateUI()方法。它是 旨在将组件的UI属性重置为来自的值 目前的外观。

  • 请注意setSize(...)setLocation(...)或等方法 不鼓励setBounds(...)因为Swing不是为了使用而设计的 确切的组件大小/位置,但改为Layout Managers。 另请参阅this topic