Swing Java progressbar for matlab,如何将值提供给它?
我遇到了MatlabWaitBar的一个有趣的替代品,它来自java,如下所示Swing Java progressbar for matlab,如何将值提供给它?,swing,matlab,matlab-guide,Swing,Matlab,Matlab Guide,我遇到了MatlabWaitBar的一个有趣的替代品,它来自java,如下所示 jBarHandle = javax.swing.JProgressBar(0, 103); jBarHandle.setStringPainted(true); jBarHandle.setIndeterminate(false); posPanel = getpixelposition(handles.slider1,true); javacomponent(jBarHandle,posPanel,han
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的output函数下调用上述代码将使用启用java的滑块更新滑块。但是如何将变量_数据传递到setValue中呢
有人试过这个吗?或者你有什么想法?请提供帮助。您可以将变量直接传递给
JProgressBar
对象的setValue
方法。在这里,我使用它来确保从事件调度线程(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));
setappdata(handles.fig, 'ProgressBar', jBarHandle);
然后,每当滑块值更改时(以编程方式或通过GUI),进度条也会更新
更多信息请参见Yair Altman提供的EDT
如果要在GUI中保存java句柄,可以使用以下命令
listener = addlistener(handles.slider1, 'Value', 'PostSet', @(s,e)jBarHandle.setValue(e.NewValue));
setappdata(handles.fig, 'ProgressBar', jBarHandle);
然后,您可以通过以下方式从外部函数检索它
figure_handle = findall(0, 'type', 'figure', 'tag', 'fig');
jBarHandle = getappdata(figure_handle, 'ProgressBar');
javaMethodEDT('setValue', jBarHandle, value)
您可以将变量直接传递给
JProgressBar
对象的setValue
方法。在这里,我使用它来确保从事件调度线程(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));
setappdata(handles.fig, 'ProgressBar', jBarHandle);
然后,每当滑块值更改时(以编程方式或通过GUI),进度条也会更新
更多信息请参见Yair Altman提供的EDT
如果要在GUI中保存java句柄,可以使用以下命令
listener = addlistener(handles.slider1, 'Value', 'PostSet', @(s,e)jBarHandle.setValue(e.NewValue));
setappdata(handles.fig, 'ProgressBar', jBarHandle);
然后,您可以通过以下方式从外部函数检索它
figure_handle = findall(0, 'type', 'figure', 'tag', 'fig');
jBarHandle = getappdata(figure_handle, 'ProgressBar');
javaMethodEDT('setValue', jBarHandle, value)
谢谢可以从外部函数执行“jBarHandle.setValue(k)”吗?我的意思是,我将在GUIDE GUI.m文件中定义条句柄并将其放置在内部,但更改外部函数(即另一个.m文件中的函数)中的值I,e setValue?@statisticalbeginner只需将java句柄保存在GUI中,然后您就可以从其他地方访问它
handles.jBar=jBarHandle
或setappdata(图'jprogress',jBarHandle)
然后从外部函数检索句柄jBarHandle=getappdata(gcf,'jprogress')
@statisticalbeginner我添加了一些代码,应该能够实现这一点。我可以知道如何将数字句柄引入外部函数吗?(假设我的人像有标签“fig”)hfigure=findall(0,'type','figure','tag','fig')
谢谢。可以从外部函数执行“jBarHandle.setValue(k)”吗?我的意思是,我将在GUIDE GUI.m文件中定义条句柄并将其放置在内部,但更改外部函数(即另一个.m文件中的函数)中的值I,e setValue?@statisticalbeginner只需将java句柄保存在GUI中,然后您就可以从其他地方访问它handles.jBar=jBarHandle
或setappdata(图'jprogress',jBarHandle)
然后从外部函数检索句柄jBarHandle=getappdata(gcf,'jprogress')
@statisticalbeginner我添加了一些代码,应该能够实现这一点。我可以知道如何将数字句柄引入外部函数吗?(假设我的图形有标记“fig”)hfigure=findall(0,'type','figure','tag','fig')