有没有人知道在MATLAB gui中显示弹出日期选择日历的方法?我知道财务工具箱有uicalendar
功能,但不幸的是我没有那个工具箱。
我有预感我将不得不使用一些Java或其他语言,我对此一无所知。
我正在寻找类似的东西: alt text http://www.welie.com/patterns/images/date-selector-expedia-small.png
在用户选择日期后返回日期字符串。
答案 0 :(得分:6)
以下两种方法可以在Matlab中为您提供具有专业外观的日历组件,而无需太多的编程工作:
使用 Java 日历组件(例如,these或these之一)。下载相关的Java类或Jar文件后,将其添加到静态Java类路径中(使用Matlab命令提示符中的edit('classpath.txt')
命令)。最后,使用内置的 javacomponent 函数将组件放在Matlab图形窗口中。
如果您使用的是Windows操作系统,则可以嵌入任何可用的 Active-X 日历控件。使用内置的 actxcontrolselect 功能选择您喜欢的日历控件(例如,Microsoft Office的“Calendar Control 11.0” - MSCAL.Calendar.7 - 会自动安装Office 2003;或“Microsoft日期和时间选择器控件6.0” - MSComCtl2.DTPicker.2,或...)。然后使用 actxcontrol 功能将组件放置在Matlab图形窗口中。
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