gui的MATLAB日期选择弹出日历

时间:2010-04-16 19:16:35

标签: user-interface matlab calendar datepicker

有没有人知道在MATLAB gui中显示弹出日期选择日历的方法?我知道财务工具箱有uicalendar功能,但不幸的是我没有那个工具箱。

我有预感我将不得不使用一些Java或其他语言,我对此一无所知。

我正在寻找类似的东西: alt text http://www.welie.com/patterns/images/date-selector-expedia-small.png

在用户选择日期后返回日期字符串。

4 个答案:

答案 0 :(得分:6)

以下两种方法可以在Matlab中为您提供具有专业外观的日历组件,而无需太多的编程工作:

  1. 使用 Java 日历组件(例如,thesethese之一)。下载相关的Java类或Jar文件后,将其添加到静态Java类路径中(使用Matlab命令提示符中的edit('classpath.txt')命令)。最后,使用内置的 javacomponent 函数将组件放在Matlab图形窗口中。

  2. 如果您使用的是Windows操作系统,则可以嵌入任何可用的 Active-X 日历控件。使用内置的 actxcontrolselect 功能选择您喜欢的日历控件(例如,Microsoft Office的“Calendar Control 11.0” - MSCAL.Calendar.7 - 会自动安装Office 2003;或“Microsoft日期和时间选择器控件6.0” - MSComCtl2.DTPicker.2,或...)。然后使用 actxcontrol 功能将组件放置在Matlab图形窗口中。

  3. Matlab有一些非常有用的内置日历(日期选择)控件 - 我今天发布了an article about them

答案 1 :(得分:4)

我从calendar() function开始,它输出一个包含任何月份日历的矩阵。我假设您可以将其与用户可点击的界面结合起来以检索特定日期吗?

以下代码非常难看,但可以帮助您入门......

 WINDOW_WIDTH = 300;
 WINDOW_HEIGHT = 200;
f= figure('Position',[300 300 WINDOW_WIDTH WINDOW_HEIGHT]);

 NB_ROWS = 6;
 NB_COLS = 7;
 width = round(WINDOW_WIDTH/NB_COLS);
 height = round(WINDOW_HEIGHT/NB_ROWS);
 buttons = nan(NB_ROWS,NB_COLS);
 dates = calendar();

 for row = 1:NB_ROWS
    for col = 1:NB_COLS
       if dates(row,col) == 0
          mydate = '';
       else
          mydate = sprintf('%i', dates(row,col));
       end
       buttons(row,col) = uicontrol('Style', 'PushButton', ...
          'String', mydate, ...
          'Position', [(col-1)*width (NB_ROWS - row)*height width height]);
    end
 end

答案 2 :(得分:4)

遗憾的是,我没有太多时间来获得更完整的答案,但我会尝试uitable创建一个表并定义CellSelectionCallback来获取日期。

这有点让你开始:

dates = calendar;
dates(~any(dates,2),:) = [];
fh = figure;
uh = uitable('parent',fh,'data',dates,'ColumnWidth',repmat({20},1,7),...
             'ColumnName',{'S','M','T','W','T','F','S'});

答案 3 :(得分:4)

Mathworks File Exchange中的uigetdate函数也是一个很好的解决方案:

http://www.mathworks.com/matlabcentral/fileexchange/8313-uigetdate