- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Matlab 中创建了一个 UItable,其中填充了各种值和选项。看起来像:
对应的代码如下:
selector_1 = { 'A'; 'B' ; 'C' };
selector_2 = { 'A.1'; 'A.2'; 'A.3'; ...
'B.1'; 'B.2'; 'B.3'; ...
'C.1'; 'C.2'; 'C.3' };
rows = 5;
f = figure('name','Configuration of output','Position',[200 200 430 25+rows*20],'numbertitle','off','MenuBar','none');
dat = {'select outputfile...', 'select identifier...', 'Specifier', 'Index'};
dat = repmat(dat,rows,1);
columnname = {'Output file ',...
'Identifier ',...
'Specifier ', 'Index'};
columnformat = { {selector_1{:}}, {selector_2{:}}, 'char', 'numeric' };
columneditable = [true true true true];
t = uitable('Units','normalized','Position',...
[0 0 1 1], 'Data', dat,...
'ColumnName', columnname,...
'ColumnFormat', columnformat,...
'ColumnEditable', columneditable,...
'RowName',[]);
set(t, 'Data', dat,'celleditcallback','get(t,''Data'')');
所以我运行代码,图打开了。因此底层脚本已经完成。当我现在编辑表时,我的 uitable 对象被更改,完成后我可以通过以下方式获得最终配置:
finalconfig = get(t,'Data');
但问题是我需要手动输入这一行,因为我的脚本已经完成。如果我将此行放在脚本的末尾,则会出现错误。
所以我想到了使用下面的循环,检测何时关闭表并存储最后的配置
while ~isempty(findobj('name','Configuration of output'))
% some action
end
finalconfig = get(t,'Data');
我尝试将所有内容放入循环、整个脚本、仅包括 celleditcallback
的 set
命令和其他内容,但没有任何效果。当我编辑一个值时,要么我的脚本卡在循环中,要么我的表格显示没有更新。我还在不同的位置尝试了 drawnow
。如何处理这种情况?如何自动存储我的最终结果?我认为“关闭窗口”是最好的检测 Action ,因为我认为我无法实现“保存”按钮。我还尝试使用 GUIDE
创建一个 gui,但完全迷路了,我希望不用它就能解决它。
编辑:我现在能够实现“保存”按钮并按如下方式尝试回调:
uimenu('Label','Save configuration','Callback',@saveConfig);
function saveConfig(~,~)
output = get(t,'Data',);
save([pwd 'output.mat'],'output');
end
我还按照 Lucius Domitius Ahenobarbus 的建议实现了自定义 CloseRequestFcn
。但后来我遇到以下问题之一:
1)我将所有内容定义为脚本,一切正常,但我需要将 @saveConfig
(实际上是我最喜欢的)或 @my_Closefcn
之类的函数定义为我的唯一函数文件工作区,我很难传递正确的参数,因为 dat
始终保持不变,即使它实际上得到了更改。(example from the mathworks site 有效!但它不需要额外的参数。)
2) 当我使用
function configuration
% my script from above
end
我可以直接(嵌套)实现@saveConfig
或@my_Closefcn
,我想参数的传递可以正常工作。但是我的表的编辑不再起作用,抛出以下错误:
Error using handle.handle/get
Invalid or deleted object.
Error while evaluating uitable CellEditCallback
如何解决?既然我知道我什至可以向 uitable 添加按钮,我真的很想避免使用 GUIDE
。我上面的代码是可执行的,所以如果你尝试看看我的实际问题是什么,我会很高兴,因为它很难描述。
最佳答案
取决于是否使用 GUIDE:
使用 CloseRequestFcn->
不使用 GUIDE:
%write your own CloseRequestFcn and set the figure CloseRequest-Callback to it:
set(gcf,'CloseRequestFcn',@my_closefcn)
%use gcf or the handle of the figure directly
并定义 my_closefcn,包括图形句柄的删除语句,否则图形不会关闭 :)
有关“重新定义 CloseRequestFcn”的更多信息,请参阅文档。
使用指南:
您可以通过检查图来编辑 CloseRequestFcn。有一个名为 CloseRequestFcn 的字段会自动创建该函数,您无需关心获取句柄。它看起来像这样:
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: delete(hObject) closes the figure
delete(hObject);
现在在删除图形之前,您应该能够获取 uitable 的数据(如果您有句柄),我建议只将数据分配给基础工作区,例如:
assignin('base', 'finalTableData', get(myTableHandle,'Data'));
编辑
因为我不够清楚,看这个例子:
(在一个脚本中使用)->
function test
h=figure;
x=1:10;
mytable=uitable(h,'Data',x);
set(h,'CloseRequestFcn',@myCloseFcn)
%give a unique Tag:
set(h,'Tag', 'myTag')
set(mytable,'Tag','myTableTag')
end
function myCloseFcn(~,~)
myfigure=findobj('Tag','myTag');
myData=get(findobj(myfigure,'Tag','myTableTag'),'Data')
assignin('base','myTestData',myData)
delete(myfigure)
end
事实上,如果您知道如何找到图形的句柄,则无需关心您的 Closereq-Callback 的参数!只需为您的图形/合适的东西提供一些您以后可以识别的东西。我使用了“Tag”,因为我首先想到的是其他参数。
关于matlab - 以编程方式保存可编辑的 uitable 的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19381405/
我添加了编辑按钮 self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButto
我试图在运行时“干净地”更改 UIBarButtonItem 文本,以便可以切换编辑/完成模式。然而,每次我在运行时更改 title 属性时,动画看起来都很笨拙。我正在寻找模拟联系人应用程序中“编辑/
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我想更改 INI 文件中的一些值。不幸的是,我在 2 个不同的部分有键,它们共享相同的名称但需要不同的值。我的代码使用 Get-IniContent函数来自 PsIni . 示例 INI 文件: [P
是否有通知或委托(delegate)方法可用于检测表格 View 何时进入编辑状态? 我想要做的是检测表正在编辑,然后显示一个额外的行,上面写着“添加新项目”或类似的东西。 我尝试在加载 View C
例如,我试图从 svg 读取样式块,我可以获取类型但不能获取字符串。 $svgTemplate = new SimpleXMLElement($_POST['SvgTemplateImport']);
我可以使用 self.navigationItem.leftBarButtonItem = self.editButtonItem; 通过按下导航面板上的编辑按钮让 UITableViewContro
我正在使用markitup!作为 Markdown 编辑器( example )。 目前,我需要按预览按钮(绿色勾号)来显示预览面板。 我希望自动显示预览 - 我怎样才能实现这一点? 最佳答案 我没有
我的处境非常糟糕。我丢失了源代码,客户需要在应用程序中进行一些更改。想想一个编辑程序集的例子:Test.dll,然后添加代码行,最后重新编译它 所以我的问题是: -可以这样做吗? -如果可能的话,什么
我使用了一些 JavaScript 来通过按钮更改段落元素的内容。它工作正常,但我还想让按钮控制标题和附图。给我指明正确的方向吗? 这是我用来更改段落的代码 .... 谢谢! 最佳答案 尝试将 Ja
是否有任何 Emacs lisp 插件可以让我轻松地在 yaml 文件中编辑或输入数据。 例如: --- sample yaml file ---Name : Addr :City :State:Zi
新手Java问题,我确定已经解决了,但是在任何地方都找不到解决方案:( 我想使用这里包含的java程序http://sourceforge.net/projects/ant-tibco/files/
在我的网页中,我使用了 gridview。在这个 GridView 中,它显示了一组用户信息。我刚刚从智能标签菜单中添加了一个按钮。我的要求是当我点击每个用户对应的按钮时,它会重定向到另一个页面并显示
我想在没有任何框架的情况下直接在 JS 中编辑一个 SVG 文件。 基本上我有一个 SVG 主文件,其中应该包含一些子 SVG。 我已经在 Ajax 中检索了这些子项的内容,但我想将它们插入到 SVG
我有我的 ViewModel,我有我的 Controller 可以从 ViewModel 正确显示,但是我不确定如何使 ViewModel 可编辑,以便将编辑后的数据发送回模型。我只想编辑 Order
我不确定我的做法是否正确。 IplImage *dog_1 = cvCreateImage(cvGetSize(oriImg), oriImg->depth, oriImg->nChannels);
我有一个创建二维码的网络服务器。在此过程中,我得到一个 BarcodeQRCode 对象,我可以从中获取图像 (.getImage())。 我不确定如何将这张图片发回给客户。我不想将它保存在文件中,而
已编辑:我的第一个问题解决了,但又出现了另一个问题,只提供了一个用户 ID。这是修改后的代码的屏幕截图。 回到表格,用户将按下编辑按钮,这样他就可以编辑问题并给出适当的操作.. 我的上表代码是这样的:
据我了解,我无法通过重新启动服务器来清除 MySQL 查询缓存。 每次运行 sql 时,我都试图获得与第一个代码块类似的结果 1-这是在重新启动 Apache 和 MySQL 之前(第一次使用这些查询
我正在创建一个页面来搜索项目,然后能够编辑/更新它。当它只返回一个结果时我能够做到这一点,但当它给我多个结果时我只能编辑最后一项。下面是我的代码: ....... $dj =$_POST[djnum]
我是一名优秀的程序员,十分优秀!