Java matlab 的进度条,你如何向它提供值?
Java progressbar for matlab, how do you feed the values to it?
我发现了一个有趣的 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 更新滑块。但是如何将 variable_data 传递给 setValue 呢?
有人试过这个吗?或者有什么想法?请帮忙
您可以将变量直接传递给 JProgressBar
对象的 setValue
方法。在这里,我使用 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
您传递给进度条的值应该只是您本地范围内的一个变量。我不完全确定你为什么要用这个进度条覆盖一个滑块,但你可以 link 通过简单地执行以下操作
这两个的值
listener = addlistener(handles.slider1, 'Value', 'PostSet', @(s,e)jBarHandle.setValue(e.NewValue));
然后,只要滑块值发生变化(以编程方式或通过 GUI),进度条也会更新。
Yair Altman 提供的 EDT here 中有更多信息。
如果您想在 GUI 中保存 java 句柄,可以使用以下命令
setappdata(handles.fig, 'ProgressBar', jBarHandle);
然后可以通过以下方式从外部函数中获取它
figure_handle = findall(0, 'type', 'figure', 'tag', 'fig');
jBarHandle = getappdata(figure_handle, 'ProgressBar');
javaMethodEDT('setValue', jBarHandle, value)
我发现了一个有趣的 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 更新滑块。但是如何将 variable_data 传递给 setValue 呢?
有人试过这个吗?或者有什么想法?请帮忙
您可以将变量直接传递给 JProgressBar
对象的 setValue
方法。在这里,我使用 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
您传递给进度条的值应该只是您本地范围内的一个变量。我不完全确定你为什么要用这个进度条覆盖一个滑块,但你可以 link 通过简单地执行以下操作
这两个的值listener = addlistener(handles.slider1, 'Value', 'PostSet', @(s,e)jBarHandle.setValue(e.NewValue));
然后,只要滑块值发生变化(以编程方式或通过 GUI),进度条也会更新。
Yair Altman 提供的 EDT here 中有更多信息。
如果您想在 GUI 中保存 java 句柄,可以使用以下命令
setappdata(handles.fig, 'ProgressBar', jBarHandle);
然后可以通过以下方式从外部函数中获取它
figure_handle = findall(0, 'type', 'figure', 'tag', 'fig');
jBarHandle = getappdata(figure_handle, 'ProgressBar');
javaMethodEDT('setValue', jBarHandle, value)