部分更改文本框中文本的颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部分更改文本框中文本的颜色相关的知识,希望对你有一定的参考价值。

我正在尝试包含一个小文本框,其中包含一个显示结果的表格。在表格中,我想更改单个单词或符号的文本颜色。

该表是使用表格和LaTeX标记创建的。出于某种原因,来自TextBox Properties的一些命令如it工作,而color{red}例如不起作用。你知道一种让它着色的方法吗?

figure
str = 'egin{tabular}{lr} $it test$ & A   $color{magenta} test$ & Aend{tabular}';  
h = annotation('textbox',[.15 .15 .2 .28],...  
            'Interpreter', 'latex',...
            'FitBoxToText','on',...
            'EdgeColor','black',...
            'BackgroundColor', [1 1 1]);
set(h, 'String', str);
答案

您可以欺骗并使用支持html标记的未记录的jLabel对象。

figure
str = '<HTML><FONT color="red">Hello</Font></html>';  
jLabel = javaObjectEDT('javax.swing.JLabel',str);
[hcomponent,hcontainer] = javacomponent(jLabel,[100,100,40,20],gcf);

您也可以制作HTML表格:

str = ['<HTML><FONT color="red">Here is a table</Font>'...
       '<table><tr><th>1</th><th>2</th><th>3</th></tr>'...
       '<tr><th>4</th><th>5</th><th>6</th></tr></html>'];  
jLabel = javaObjectEDT('javax.swing.JLabel',str);
[hcomponent,hcontainer] = javacomponent(jLabel,[100,200,150,250],gcf);

您可以在Matlab here以及HTML here中阅读有关jLabel组件的更多信息。归功于Yair Altman的博客。

另一答案

您遇到的问题是仅当Interpreter属性设置为'tex'时才支持文本着色,但仅当解释器设置为tabular environment时才支持'latex'。你最好的解决方法可能是使用the jLabel option suggested by Zep

我能看到的唯一方法是使用'tex'解释器并自己管理水平元素间距。您可以使用cell array of strings创建多行文本:

str = {'{it test}   A', '{color{magenta} test}   A'};
set(h, 'Interpreter', 'tex', 'String', str);

enter image description here

以上是关于部分更改文本框中文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章

更改 Disqus 评论框中的文本颜色

如何使用python更改文本框中的特定字母颜色

有没有办法以编程方式使用kotlin更改片段中的文本颜色?

在C# winform中怎么设置文本框中部分字体的颜色,即根据条件在编程中改变文本框中部分字体的颜色

动态地,在运行时,如何在 WPF 中更改文本框中某些单词的颜色?

如果 EditText 字段中有文本,如何更改 backgroundtint 颜色?