Java ProgressBar для Matlab, как вы передаете значения для него?
Я наткнулся на интересную альтернативу matlab waitbar, которая написана на Java, как показано ниже.
jBarHandle = javax.swing.JProgressBar(0, 103);
jBarHandle.setStringPainted(true);
jBarHandle.setIndeterminate(false);
posPanel = getpixelposition(handles.slider1,true);
javacomponent(jBarHandle,posPanel,handles.fig);
jBarHandle.setValue(fix(0));
вызов вышеуказанного кода в функции вывода GUIDE обновит слайдер с включенным java. Но как передать переменную_данных в setValue?
кто-нибудь пробовал это? или есть идеи? пожалуйста помоги.
1 ответ
Вы можете передать переменную непосредственно в setValue
метод вашего JProgressBar
объект. Здесь я использовал javaMethodEDT
чтобы убедиться, что метод вызывается из потока диспетчеризации событий (EDT). Вы также можете просто позвонить jBarHandle.setValue(k)
непосредственно.
jBarHandle = javax.swing.JProgressBar(0, 103);
jBarHandle.setStringPainted(true);
jBarHandle.setIndeterminate(false);
fig = figure('Position', [0 0 200 20]);
[jhandle, hhandle] = javacomponent(jBarHandle, [0 0 1 1], fig);
set(hhandle, 'parent', fig, 'Units', 'norm', 'Position', [0 0 1 1])
for k = 1:103
javaMethodEDT('setValue', jBarHandle, k);
pause(0.1);
end
Значение, которое вы передаете в индикатор выполнения, должно быть просто переменной в вашей локальной области видимости. Я не совсем уверен, почему вы накладываете слайдер на этот индикатор, но вы можете связать значение этих двух, просто выполнив следующее
listener = addlistener(handles.slider1, 'Value', 'PostSet', @(s,e)jBarHandle.setValue(e.NewValue));
Затем, когда значение ползунка изменяется (программно или через графический интерфейс), индикатор выполнения также обновляется.
Больше информации в EDT здесь предоставлено Яиром Альтманом.
Если вы хотите сохранить свой дескриптор Java в графическом интерфейсе, вы можете использовать следующее
setappdata(handles.fig, 'ProgressBar', jBarHandle);
Затем из внешней функции вы можете получить его следующим образом
figure_handle = findall(0, 'type', 'figure', 'tag', 'fig');
jBarHandle = getappdata(figure_handle, 'ProgressBar');
javaMethodEDT('setValue', jBarHandle, value)