Swing Java progressbar for matlab,如何将值提供给它?

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

我遇到了MatlabWaitBar的一个有趣的替代品,它来自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的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')