Форум программистов, компьютерный форум, киберфорум
letete
Войти
Регистрация
Восстановить пароль
Несколько сообщений о МАТЛАБ и о том, как им пользоваться.

Комментарии, критика и восторженное рукоплескание приветствуются в самой категоричной форме.

использование HTML

Запись от letete размещена 03.07.2014 в 12:09
Показов 3784 Комментарии 0

Подборка статей г-на Альтмана
на тему использования HTML в МАТЛАБ.
Перевод вольный, сохраняющий лишь суть проблемы,
опробованный и дополненный.

Отсылка к оригиналам:
original part 1original part 2original part 3

Часть 1.
Все графические элементы uicontrols МАТЛАБа основаны на компонентах Java Swing (недокументированный факт). Общей чертой всех свингов JLabels является допустимость использования форматирования в формате HTML (и CSS), поэтому в МАТЛАБ для элементов графической оболочки типа uicontrol можно указывать не только сам текст, но и стиль его отображения: все, что может быть отформатировано в HTML (шрифт, цвет, размер, ...). При этом теги не обязательно закрывать (<tag> ... </tag>). Хотя закрывать теги и не обязательно, все же весьма и весьма не красиво, когда этого не делают.
Вот пример разноцветного листбокса в МАТЛАБ:
Matlab M
1
2
3
4
uicontrol('Style','list', 'Position',[10,10,70,70], 'String', ...
{'<HTML><FONT color="red">Hello</Font></html>', 'world', ...
 '<html><font style="font-family:impact;color:green"><i>What a', ...
 '<Html><FONT color="blue" face="Comic Sans MS">nice day!</font>'});
Название: html11.png
Просмотров: 1219

Размер: 1.7 Кб
Кроме того вот еще несколько примеров (меню, подсказки и комбобоксы):
Matlab M
1
2
3
4
5
6
uicontrol('Style','popup', 'Position',[10,10,150,100], 'String', ...
{'<HTML><BODY bgcolor="green">green background</BODY></HTML>', ...
 '<HTML><FONT color="red" size="+2">Large red font</FONT></HTML>', ...
 '<HTML><BODY bgcolor="#FF00FF"><PRE>fixed-width font'});
h = uicontrol('Style', 'pushbutton');
set(h, 'ToolTip', '<HTML><b>line #1</b><br><font color="red">line #2</font></HTML>')
Название: uimenu2.png
Просмотров: 1085

Размер: 5.1 КбНазвание: html2.png
Просмотров: 1280

Размер: 568 байтНазвание: html3.png
Просмотров: 1353

Размер: 3.5 Кб

Часть 2.
Использование HTML-панели браузера
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
% Create a blank figure window
f=figure('Name','Browser GUI demo','Num','off','Units','norm');
 
% Add the browser object on the right
jObject = com.mathworks.mlwidgets.html.HTMLBrowserPanel;
[browser,container] = javacomponent(jObject, [], f);
set(container, 'Units','norm', 'Pos',[0.3,0.05,0.65,0.9]);
 
% Add the URLs listbox on the left
urls = {'www.cnn.com','www.bbc.co.uk','myLocalwebpage.html',...
        'www.Mathworks.com', 'undocumentedmatlab.com'};
hListbox = uicontrol('style','listbox', 'string',urls, ...
        'units','norm', 'pos',[0.05,0.05,0.2,0.9], ...
        'userdata',browser);
 
% Set the listbox's callback to update the browser contents
cbStr=['strs = get(gcbo,''string''); ' ...
      'url = strs{get(gcbo,''value'')};' ...
      'browser = get(gcbo,''userdata''); ' ...
      'msg=[''<html><h2>Loading '' url '' - please wait''];'...  % no need for </h2></html>
      'browser.setHtmlText(msg); pause(0.1); drawnow;'...
      'browser.setCurrentLocation(url);'];
set(hListbox,'Callback',cbStr);
Собсна, вот примерно результат: Нажмите на изображение для увеличения
Название: Browser.png
Просмотров: 1317
Размер:	34.8 Кб
ID:	2569

Часть 3.
Немного оговорюсь: то, что описано во второй части не очень хорошо работает (возможно, из-за прокси, надо разбираться, исправлять...) Но вот гораздо больший интерес представляет следующая идея. Та панель, которая там использовалась, она может использоваться для вывода произвольного HTML-форматированного текста. Где это полезно: например, я делал GUI с такой панелью для параллельного вывода текста, таблиц и графиков (возможно, приведу свой конкретный пример, когда наберусь сил на это). Итак, суть:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
mytext = ['<html><body><table border="1">' ...
          '<tr><th>Month</th><th>Savings</th></tr>' ...
          '<tr><td>January</td><td>$100</td></tr>' ...
          '</table></body></html>'];
 
% Create a figure with a scrollable JEditorPane
hfig = figure();
je = javax.swing.JEditorPane('text/html', mytext);
jp = javax.swing.JScrollPane(je);
[hcomponent, hcontainer] = javacomponent(jp, [], hfig);
set(hcontainer, 'units', 'normalized', 'position', [0,0,1,1]);
здесь mytext - это по сути произвольная HTML-страничка и именно ее можно по своему усмотрению редактировать. Вот так это выглядит:
Нажмите на изображение для увеличения
Название: JEditorPane.png
Просмотров: 1529
Размер:	11.2 Кб
ID:	2570
Есть один небольшой нюанс, который, наверно, стоит иметь ввиду: эта панель допускает редактирование содержимого пользователем, ну т.е. туда что-то выводишь, а пользователь может что-то дописать/удалить. Конечно, оно не сохранится нигде и при обновлении страницы все станет на свои места, но помнить о такой неприятности все же нужно, наверно...

Замечание.
И хотя г-н Альтман утверждает, что отформатировано может быть все, что допускает форматировать HTML, это все же не так. Интерпретатор HTML здесь достаточно урезанный. У меня были случаи, когда приходилось изобретать велосипед только потому, что некоторые инструкции HTML игнорировались. По мере вспоминания, что именно, где и как обойти - буду дополнять пост. Замечания, предложения по этому поводу также весьма недурственно было бы оставлять в комментариях.

Часть 4. От себя
Как всем, полагаю, известно, комментарии к функции (или классу) служат автоматически справкой по команде
Matlab M
1
2
3
help myfunc
% или
doc myfunc
. Кроме того, я думаю, что многие в курсе, что в созданной собственноручно справке можно добавить строчку "See also:" - это позволит включить ссылки на справку к похожим функциям, но не всегда это работает. Зацени:
Matlab M
1
2
3
4
5
6
7
function myfunc()
% if you will use big endian MYFUNC, that means MYFUNC will 
% highlight in help (or in doc browser)
% 
% See also: help, doc, ColorSpec
    disp('Hello world')
end
Например, здесь не работает ссылка на ColorSpec (наверно, потому что это не функция, а лишь страница из справки), но все равно хотелось бы иметь возможность гиперссылочного перехода на эту страницу. Можно поступить следующим образом. В окне браузера справки (doc myfunc) правой кнопкой вызываем контекстное меню и выбираем пункт "Page Source":
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 1097
Размер:	41.5 Кб
ID:	2580
Внимательно смотрим как организована страница справки и делаем то же самое:
Matlab M
1
2
3
4
5
6
7
function myfunc()
% if you will use big endian MYFUNC, that means MYFUNC will 
% highlight in help (or in doc browser)
% 
% See also: help, doc, <a href="matlab:doc ColorSpec">ColorSpec</a>
    disp('Hello world')
end
Радуемся результату.
Размещено в МАТЛАБ
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru