Cro*_*ley 3 formatting matlab alignment uicontrol
我正在创建GUI,我希望在那里有输入和结果.
我有text字段作为标签和/ edit或popup输入.当我有
uicontrol('style','text','string','foo','units','centimeters','position',[1 1 1 0.5]);
uicontrol('style','edit','string','foo','units','centimeters','position',[2 1 1 0.5]);
Run Code Online (Sandbox Code Playgroud)
我得到的foo字符串略有错位,text字段的基线略高于edit/ popfield 的基线.
我该如何对齐这些字段?
不幸的是,这需要访问底层Java.该方法类似于Amro的方法,用于a pushbutton并利用外部findjobj函数:
h.t = uicontrol('style','text','string','foo','units','centimeters','position',[1 1 1 0.5]);
h.e = uicontrol('style','edit','string','foo','units','centimeters','position',[2 1 1 0.5]);
jh = findjobj(h.t);
jh.setVerticalAlignment(javax.swing.JLabel.CENTER)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这仍然是一两个像素:
我会说必要时只是逐个像素地碰撞文本:
oldunits = get(h.t, 'Units');
set(h.t, 'Units', 'Pixels');
pos = get(h.t, 'Position');
pos(2) = pos(2) + 1;
set(h.t, 'Position', pos)
set(h.t, 'Units', oldunits)
Run Code Online (Sandbox Code Playgroud)
这给了我们:
编辑:修改BackgroundColor编辑框的属性没有任何效果(虽然将其设置none为黑框...),该框将保持默认颜色.根据MathWorks,这是一个设计决定:
这是MATLAB显示
BackgroundColor可编辑文本对象的预期行为 .
这也可能最有可能通过利用底层Java来更新,但我不熟悉.