Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MatlabGUI中制作一个简单的无边框按钮_Matlab_User Interface_Button_Border_Borderless - Fatal编程技术网

如何在MatlabGUI中制作一个简单的无边框按钮

如何在MatlabGUI中制作一个简单的无边框按钮,matlab,user-interface,button,border,borderless,Matlab,User Interface,Button,Border,Borderless,很简单,我试图在MatlabGUI中创建一个无边界按钮。原因主要是美学上的,所以没有必要争论为什么它应该是无边界的 我已经知道,这不能单独使用内置的MATLAB uicontrol来完成,因为按钮的边框在MATLAB中不是可访问的属性。因此,为了操纵边界,必须访问底层JAVA代码(编写MATLAB的代码)。这就是我迷路的地方,因为我只在MATLAB中编程过 我在这里举了一个例子: 但我仍然没有得到一个无边界按钮 下面是一个简单的代码示例(请注意,使用了Yair Altman的findjobj,

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

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

我在这里举了一个例子:

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

下面是一个简单的代码示例(请注意,使用了Yair Altman的findjobj,可从MATLAB文件交换中获得):


你觉得我哪里出了问题吗?谢谢

我不清楚你说的“无边界”是什么意思

查看您发布的网页上的示例,我假设您正在寻找类似“隐形”按钮的东西

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

  • 除了按钮,您还可以有一个
    静态文本uicontrol
  • 使其
    backgroundcolor
    与GUI backgroundcolor相同(它将变得“不可见”且没有任何边框)
  • 不要在
    静态文本uicontrol中设置任何
    字符串
  • 静态文本uicontrol的
    启用
    属性设置为
    关闭
  • 静态文本uicontrol定义
    按钮downfcn
  • 按下
    按钮DOWNFCN
当您在“不可见”的
静态文本uicontrol上按下鼠标按钮时,将执行其
按钮downfcn

你只要记住。。。是“不可见”
静态文本uicontrol


希望这有帮助。

您应该添加两行:

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

边界受飞越外观功能的影响。 您需要添加

jh.setFlyOverAppearance(true);

对我有用。

有趣的问题,但MATLAB GUI和美学不应在同一段落中使用;)谢谢你的反馈。所谓无边框,我的意思是它看起来就像漂浮在背景上的文本,没有任何包围文本的矩形。我确实考虑过使用静态文本UCONTROL来创建这种无边界的外观。静态文本uicontrol的问题是它给我带来了一个新问题。静态文本将自动与其矩形空间的顶部(而不是中心)对齐。这仍然需要在Java句柄对象上进行编辑,因为在MATLAB中,垂直文本对齐不是可访问的uicontrol属性。
jh.setFlyOverAppearance(true);