2

我是新手,我想禁用此示例中显示的日期,但在一个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);
4

1 回答 1

2

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

  • JDayChooser是一个面板,其中包含以表格形式显示的一个月中每一天的按钮。
  • JCalendar组件具有JDayChooser嵌入式并添加了更改年月、更新日期选择器的功能。
  • JDateChooserJCalendar按下选择器按钮时会在弹出窗口中显示 a 。

因此,您基本上需要获取对JDayChooser组件的引用并添加日期评估器,如下所示:

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

其他的建议

  • 请注意此答案中描述的错误行为。您应该在添加日期评估器后明确设置当前日期以解决此问题。

  • 你永远不应该updateUI()明确地调用任何方法。它旨在将组件的 UI 属性重置为当前外观的值。

  • 请注意,不鼓励使用诸如或 之类的方法setSize(...),因为 Swing 并非旨在用于精确的组件大小/位置,而是与布局管理器一起使用。另请参阅此主题setLocation(...)setBounds(...)

于 2014-09-26T12:15:09.607 回答