Кто-либо знает о методе для отображения раскрывающегося календаря выбора даты в MATLAB gui? Я знаю, что финансовая панель инструментов имеет a uicalendar
функция, но к сожалению у меня нет той панели инструментов.
У меня есть догадка, я оказываюсь перед необходимостью использовать некоторый Java или некоторый другой язык для этого, о котором я ничего не знаю.
Я ищу что-то подобное этому:
(источник: welie.com)
который возвратил бы строку даты после того, как пользователь выбирает дату.
К сожалению, у меня нет времени на более полный ответ, но я бы попробовал 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'});
Вот два подхода, которые дадут вам профессиональный компонент календаря в Matlab без лишних усилий по программированию:
Используйте компонент календаря Java (например, один из этих или эти ). После загрузки соответствующего класса Java или Jar-файла добавьте его в свой статический путь к классам Java (используйте команду edit ('classpath.txt')
из командной строки Matlab). Наконец, используйте встроенную функцию javacomponent , чтобы поместить компонент в окно рисунка Matlab.
Если вы используете ОС Windows, вы можете встроить любой доступный элемент календаря Active-X . Используйте встроенную функцию actxcontrolselect , чтобы выбрать свой любимый элемент управления календарем (например, Microsoft Office «Calendar Control 11.0» - MSCAL.Calendar.7 - который автоматически устанавливается вместе с Office 2003; или «Microsoft Date and Time Picker Control 6.0 "- MSComCtl2.DTPicker.2 или ...). Затем используйте функцию actxcontrol , чтобы поместить компонент в окно рисунка Matlab.
В Matlab есть несколько довольно полезных встроенных элементов управления календарем (выбор даты) - я опубликовал статью о них сегодня
Я бы начал с функции calendar () , которая выводит матрицу, содержащую календарь на любой месяц. Я полагаю, вы могли бы объединить это с пользовательским интерфейсом, чтобы получить конкретную дату?
Следующий код действительно уродлив, но может помочь вам начать ...
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