【问题标题】:GUI fullscreen and centeredGUI 全屏和居中
【发布时间】:2014-04-29 06:49:29
【问题描述】:

我正在尝试像这样为我的 GUI 设置全屏属性

set(gcf, 'units','normalized','position',[0 0 1 1]);

这对我不起作用,我的窗口没有居中,并且 GUI 上方出现了 matlab 的标题栏。

我找到了很多使用这个的主题,不是版本问题吗?我正在使用 Matlab R2012a, 有什么解决办法吗?

谢谢!

ps:它是全屏但不居中

【问题讨论】:

  • 看看this file-exchange code对你有没有帮助。
  • 我找到了这个函数:function maximum(hFig) if nargin
  • 也许你需要禁用所有改变图形位置的命令,就像你在问题中的那个?
  • 当我禁用这个命令集时(gcf, 'units','normalized','position',[0 0 1 1]);我的窗口居中,但不是全屏模式。
  • Java 代码应该这样做。如果它不起作用,我的猜测是 GUI 被编程为禁用最大化。在这种情况下,窗口上的最大化按钮也不应该起作用。

标签: matlab user-interface matlab-guide


【解决方案1】:

通常情况下,可以通过获取底层 Java Frame 对象并调用其setMaximized 方法来最大化图形窗口:

jf = get(handle(gcf), 'JavaFrame');
jf.setMaximized(true)

如果这不起作用,可能的原因是该图形窗口的调整大小被禁用。您应该能够以这种方式重新启用调整大小:

set(gcf, 'Resize', 'on')

当然,gcf如果不是当前图形,则替换为相应图形的句柄。

【讨论】:

  • 很好,它启用了最大化按钮,但是,还有另外两个问题: - 当我执行 GUI 时它可以最大化吗?集合(gcf,'单位','归一化','OuterPosition',[0 0 1 1]);在这种情况下不起作用 - 窗口的内容不像 GUIDE 那样居中(应该改用 GUIDE 吗?)
  • 我不会使用 OuterPosition 属性来最大化,而是使用 Java Frame 方法。确保每次都将 Resize 设置为 on,以防属性被重置。 – 关于居中:我想这就是默认情况下在 GUIDE 生成的 GUI 上禁用调整大小的原因。 GUI 布局假定有一定的窗口大小,但如果您调整大小,它可能会损坏。我看到的唯一方法是明确地对 GUI 进行编程,使其可以适应不同的窗口大小,可能使用 ResizeFcn 进行动态重新布局。
【解决方案2】:

你可以试试:

set(0,'units','pixels')
screensize = get(0,'screensize')

fh = figure(....)
...

set(fh, 'units','pixels','Position', screensize);      %// without menubar
%// or
set(fh, 'units','pixels','OuterPosition', screensize); %// with menubar

'parent'0的默认单位通常是像素,如果你想确保不搞乱其他功能,请在开头添加以下内容:

defaultunits = get(0,'units')

最后:

set(0,'units', defaultunits)

【讨论】:

  • 感谢您的回复,这与 set(gcf, 'units','normalized','OuterPosition',[0 0 1 1]);
  • 在我的机器上代码可以正常工作。您是否在代码中再次修改窗口大小?注意'Position'的第三个和第四个值是你的图形的宽度和高度。
【解决方案3】:

你几乎是对的:

set(gcf, 'units','normalized','OuterPosition',[0 0 1 1]);

【讨论】:

  • 感谢回复,我都试过了,结果一样,不是居中+matlab的标题栏
  • 这很奇怪,它对我来说非常有效,对不起,我无法提供更多帮助。
猜你喜欢
  • 2020-08-12
  • 2015-02-17
  • 2017-05-08
  • 1970-01-01
  • 2015-09-17
  • 2013-11-14
  • 1970-01-01
  • 2016-07-30
  • 2015-06-09
相关资源
最近更新 更多