用户界面-如何在MATLAB GUI中制作一个简单的无边界按钮



很简单,我正试图在MATLAB GUI中创建一个无边界按钮。原因主要是美学,所以没有必要争论为什么它应该是无边界的。

我已经知道,这不能单独使用内置的MATLAB uicontrol来完成,因为按钮的边界在MATLAB中不是可访问的属性。因此,必须访问底层JAVA代码(在其上编写MATLAB)才能操作边界。这就是我迷失的地方,因为我只在MATLAB中编程过。

我在这里举了一个例子:http://undocumentedmatlab.com/blog/borderless-button-used-for-plot-properties

但我仍然没有得到一个无边界的按钮。

这里有一个简单的代码示例(注意使用Yair Altman的findjobj,它可以在MATLAB文件交换中获得):

f=figure('Menubar','none', 'Position',[200 200 300 200]);
p=uipanel(f, 'BackgroundColor', [0 0 1]);
h = uicontrol('parent', p, ...
'Style','pushbutton', ...
'String','click', ...
'TooltipString', 'you should click this' ...
'Units','normalized', ...
'Position',[0.3 0.3 0.5 0.5], ...
'BackgroundColor', [0 0 1]);
jh = findjobj(h);
jh.setBorder(javax.swing.BorderFactory.createEmptyBorder()); 
%attempt 1 does not remove border
jh.border=[];                                                
%attempt 2 does not remove border
jh.setBorder([]);                                            
%attempt 3 does not remove border
jh.border=javax.swing.BorderFactory.createEmptyBorder();     
%attempt 4 does not remove border

你觉得我哪里错了吗?谢谢

您应该添加两行:

jh.setBorderPainted(false);    
jh.setContentAreaFilled(false);

我不清楚你说的"无边界"是什么意思。

看看你发布的网页上的例子,我想你正在寻找一个类似"隐形"按钮的东西。

如果是这样的话,你可以考虑另一种方式:

  • 你可能有一个static text uicontrol,而不是一个按钮
  • 使其backgroundcolor与GUI背景颜色相同(它将变为"不可见"且没有任何边界)
  • 不要在static text uicontrol中设置任何string
  • static text uicontrolenable属性设置为off
  • static text uicontrol定义ButtonDownFcn
  • 按下ButtonDownFcn中的按钮,编写要执行的代码

当您在"不可见"的static text uicontrol上按下鼠标按钮时,它的ButtonDownFcn将被执行。

你只需要记住。。。如果static text uicontrol是"不可见的"。

希望这能有所帮助。

边界受飞越外观功能的影响。http://undocumentedmatlab.com/blog/undocumented-button-highlighting您需要添加

jh.setFlyOverAppearance(true);

为我工作。

相关内容

  • 没有找到相关文章

最新更新