标签: matlab-uitable

在滚动条上使用setValue时,uitable标头中的损坏

我试图在MATLAB中创建一个表,我可以编程方式更改滚动位置.我创建了一个uitable并解压缩了Java UITablePeer对象的句柄(此处指定为htable).

然后我UIScrollbarPane使用以下方法获取对象的句柄:

hscroll = htable.getParent.getParent.getVerticalScrollBar
Run Code Online (Sandbox Code Playgroud)

此时,图形看起来像这样(我的实际表格更复杂,这只是我做的一个例子):

之前

桌子左下角的方框是pushbutton.当触发回调时,它使用该setValue方法更改滚动条位置,例如

hscroll.setValue(10)
Run Code Online (Sandbox Code Playgroud)

在此之后,表格如下所示:

后

如您所见,表的顶部已损坏.我尝试过使用这个refresh函数或repaint方法,但它们似乎没有帮助; "修复"这个的唯一方法是移动另一个窗口(通过拖动或Alt-Tabbing),使表格完全被覆盖,当我切换回表格时就可以了.显然,这不是一个真正的最佳解决方案.

有人可以建议一种方法来预防或解决这个问题吗?

谢谢

java matlab jscrollpane visual-glitch matlab-uitable

7
推荐指数
1
解决办法
530
查看次数

是否可以防止弹出一个合适的弹出菜单?或者:如何通过单击一个单元格返回行和列索引来获取回调?

对于我正在编程的用户界面uitable.用户在第一列中选择选项A,B或C,第二列中的子选项取决于在第一列中选​​择的内容,A.1,A.2或A.3B.1,B.2或B.3C相同

在此输入图像描述

该表的代码可以在附录A中找到.

当用户首先定义主选项时,子菜单会自动减少到仅有效选项.这是由evalulating实现的CellEditCallback第1列和重置ColumnFormat列2(函数modifySelection附录B)如果用户现在意识到,他犯了一个错误,需要编辑子选项另一次,则ColumnFormat仍然按照以前的编辑组主要选项和有效选项不可用,除非他再次重新选择主选项.(见图中的蓝色突出显示).

为了解决这个问题,我还实现了CellSelectionCallback调用函数justifySelection(在附录B中),该函数通过选择进行检查,在第1列中选择了哪个选项以再次为第2列提供正确的子选项.但是由于此回调对选择作出反应,我需要选择两次,一次触发CellSelectionCallback,另一次实际选择.对于大型桌子,这可能非常烦人!

所以我的问题是:

有没有办法阻止第2列中的弹出菜单弹出,直到它找出相应列1的内容是什么,所以它会立即提供有效的选择?

要么:

如何检测单元格上的鼠标单击并获取行和列索引?但是没有调用以下选择并弹出动作?

我已经耙了所有可用的属性,但没有发现任何有用的东西.也许人们可以使用ButtonDownFcn,但如何获得细胞指数?怎么样的BusyAction财产,怎么能用于我的目的?

有任何想法吗?

我很抱歉用这么多代码轰炸你,它已经是最小的例子,但是完全可执行,所以你可以尝试一下.


附录A/B.

function fancyUitable 

selector_1 = { 'A'; 'B' ; 'C' };
selector_2 = { 'first select first row!' };

h = figure('Position',[200 100 268 120],'numbertitle','off','MenuBar','none');

defaultData =  repmat( {'select main option...', …
Run Code Online (Sandbox Code Playgroud)

matlab user-interface user-controls callback matlab-uitable

7
推荐指数
1
解决办法
2496
查看次数

如何根据表格中的数据修改合适的单元格颜色(在Matlab中)?

我有一个matlab函数,返回一个合适的结果.

表中有2列和多行:第一列是"值",第二列是各种类别的"安全阈值/置信区间".

我想格式化输出,以便某些单元格被涂成红色:第1列中"值"超出第2列中相应"安全阈值"的那些单元格.

有没有办法只用Matlab做到这一点?

PS:我知道以下页面:

http://www.mathworks.de/matlabcentral/newsreader/view_thread/150507

但是对我来说似乎有很多修修补补,我希望自那篇文章发表以来,也许Matlab已经赶上并带来了这个内置的功能?

matlab user-interface matlab-uitable

6
推荐指数
1
解决办法
1万
查看次数

如何取消选择适合的单元格/如何禁用单元格选择突出显示?

我创建了以下内容uitable:

窃听器

实际上每一行都是独立的uitable,所以显示的数字除了标题之外还包含5个uitable.为什么我这样做是我上一个问题的问题,导致显示的表格.您可以在此处的答案中找到完全可执行的代码(或下面的最小示例).使用通用GUI的解决方案也存在,但它会过多地破坏代码,实际上它似乎只是一种bug.

可以看出,每当我跳到下一行,因此到另一行时,最后的选择仍然突出显示,这看起来很愚蠢,尽管它对功能无关紧要.

有一个属于'SelectionHighlight'uitables 的属性,听起来像一个解决方案,但它没有改变任何东西.我用它如下:

set(src,'SelectionHighlight','off')  %where src is the handle of the current uitable
Run Code Online (Sandbox Code Playgroud)

在各个地方:在一个结束时'CellSelectionCallback',在一个结束时'CellEditCallback'和作为全球财产.但每次最后一个单元格仍然被选中.其实我根本不需要选择.

如何为所有我的uitables禁用整个选择或选择突出显示属性?

我如何使用此属性,它有效果?

或者:如何更改"突出显示"颜色(以及文本颜色),以便突出显示不再可见?

显然,这个问题也出现在其他情况下.


我创建了一个最小的可执行示例,其中可以在每行中选择1到3之间的数字.

function minimalTable 

%basic properties
line_height = 21.32;
table_height = 3*line_height;
lh = line_height/table_height;

h = figure('Position',[200 100 202 table_height],'numbertitle','off','MenuBar','none');

% addrow(figurehandle,number of row, percentage lineheight)
% every function call creates a new row, later dynamically
addRow(h,1,lh);
addRow(h,2,lh);
addRow(h,3,lh);
end

function modifySelection(src,~) …
Run Code Online (Sandbox Code Playgroud)

matlab user-interface callback matlab-figure matlab-uitable

6
推荐指数
1
解决办法
5675
查看次数

与Matlab一起使用的Html代码

我最近发现Matlab可以使用LaTeX字符序列.但是,它们只能由函数text,title,xlabel,ylabel和zlabel使用.我设计了一个非常合适的GUI.它的标题是一个使用HTML代码的字符串,如下所示:

headers = {'<html><center>Component X<br />(km/s^2)</center></html>', ...
           '<html><center>Component Y<br />(km/s^2)</center></html>', ...
           '<html><center>Component Z<br />(km/s^2)</center></html>'};
Run Code Online (Sandbox Code Playgroud)

我的意图是用平方替换s ^ 2.因为我不能在字符串"header"中使用LaTeX字符(至少我已经尝试了它并且它没有用),我想知道如果我使用我不知道的HTML代码我该怎么做.

html matlab latex html-helper matlab-uitable

5
推荐指数
1
解决办法
523
查看次数

如何在MATLAB中更改uitable的列名?

我正在使用MATLAB GUI.我有一个按钮,当我按下它时,它会是这样的:

合理的结果

为了显示该表,我编写了这个脚本:

T = uitable;
集(T, '数据',y)的

y 是表示表中数字的变量.

问题是,我想更改列名.例如,第一列将命名为X,第二列为Y,第三列为Z,第四列为T.我应该添加哪些脚本来更改列的名称?

matlab matlab-guide matlab-uitable

3
推荐指数
1
解决办法
5126
查看次数

在matlab gui中清除uitable的内容

有没有办法像你可以做的那样在matlab gui中清除uitable的内容

cla(handles.axes1)%用于清除轴.

我不想删除uitable,只需要清除数据.

matlab matlab-uitable

2
推荐指数
1
解决办法
6280
查看次数

只需双击即可编辑表格单元格

只需单击即可编辑表格单元格,我希望仅在双击时进行编辑.单击即可选择单元格.

我使用以下属性uitable:

set(hTable, 'Data',data,...
    'ColumnEditable', edit,...
Run Code Online (Sandbox Code Playgroud)

matlab matlab-uitable

2
推荐指数
1
解决办法
1621
查看次数

使用html内容在matlab中更改表格单元格的背景颜色

我们知道uitable支持html内容
的类似于我想要的示例在这里
解决我在matlab中的按钮回调中使用此代码之前所问的问题:

color = uisetcolor;  
numberOfClasses = str2num(get(handles.edtNumClass,'String'));  
if handles.index == 0  
    handles.tableData = cell(numberOfClasses,2);
    guidata(hObject,handles);
end
handles.index = handles.index+1;
handles.tableData(handles.index,1)=cellstr(get(handles.edtNameClass,'String'));
handles.tableData(handles.index,2)=cellstr('<html><span style="background-color:  rgb(color(1,1),color(1,2),color(1,3));"></span></html>');
set(handles.uitable2,'data',handles.tableData);
Run Code Online (Sandbox Code Playgroud)

我的问题是这行不起作用:

handles.tableData(handles.index,2)=cellstr('<html><span style="background-color:  rgb(color(1,1),color(1,2),color(1,3));"></span></html>');
Run Code Online (Sandbox Code Playgroud)

我的意思是当我在matlab中打开工作区时,我看到handle.tableData(handles.indexes,2)被设置为字符串.
但即使这个html代码没有显示为简单的字符串,背景颜色也不会改变.细胞没有变化!
和matlab没有错误信息!
请注意,我甚至使用了此代码,但没有任何变化.

handles.tableData(handles.index,2)=cellstr('<html><span style="background-color:  #FF0000;"></span></html>');
Run Code Online (Sandbox Code Playgroud)

matlab user-interface cell background-color matlab-uitable

0
推荐指数
1
解决办法
7158
查看次数