Windows   发布时间:2022-05-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – 文本’Extent’属性不包含正确的大小大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在GUI中放置一些文本,我想知道’text’类型的uicontrol需要的确切大小!

我发现有几个线程解释说这可以使用包含相同文本的’text’对象的’Extent’属性来完成,参见示例:

function form = tempfunc(txt,font,fontsizE)
    if nargin <3
        fontsize = 10;
    end
    if nargin < 2
        font = 'courier';
    end
    f = figure('Visible','off','Units','pixels');
    u = uicontrol(f,'Style','text','pixels','String',txt,'FontName','FontSize',fontsizE);
    textsize = get(u,'Extent');
    textsize = textsize(3:4);
    close(f);

    form = figure('Units','pixels');
    uicontrol(form,fontsize,'Position',[5,5,textsize]);
end

我现在的问题是,这不起作用.
当我使用tempfunc运行上面的内容时(repmat(‘a’,14));我得到下面的图窗口:

从图像中可以看出,在textsize变量中提取的文本的高度太小了!

请注意,这是我在运行Matlab R2014a的Windows计算机上运行程序时得到的结果.我后来在运行Matlab R2013b的Linux机器上运行完全相同的代码,在那台机器上我得到了我想要的结果.

我正在制作的GUI应该(希望)能够在任何计算机上运行,​​但是现在我真的不知道如何继续制作适用于任何机器的版本,所以请帮助我!

编辑:
我试图在运行Matlab R2011b(而不是我的R2014a)的另一台Windows 7机器(这次是Ultimate版而不是我的企业版)上运行相同的代码,它仍然产生了错误的文本框高度 – 但这次是文本框太高了 – 看图像:

EDIT2:
我终于安装了R2014b,但遗憾的是它没有帮助!
我看到了类似的图片:

我还试图看看我的屏幕分辨率的不同选择是否有所不同 – 他们没有.

EDIT3:

我注意到不同的字体在高度上产生不同的错误,例如默认字体(MS Sans Serif)会产生一个太高的文本框(随着更多行的添加,这个高度错误也会增加) – 在Linux上我得到了我尝试的所有字体的正确结果.

但我真正感兴趣的是使用快递字体的情况,因为我需要一个等宽字体用于我的目的.

解决方法

观察Java方面的事情,Swing组件有几种感兴趣的方法:

> getVisibleRect
> getSize(根据我的测试,它给getVisibleRect提供了可比较的结果)
> getPreferredSize

问题是,“首选大小”似乎是正确的大小(你寻求),而get(…,’Extent’)返回的大小;是可见大小,具有以下含义:

为了阐明上述内容:图形窗口的主题和平台特定装饰可能会减少组件的可用空间,从而减小其可见尺寸(如here所述).

作为一个数字示例,当使用默认设置和repmat(‘a’,14)运行时,我得到(在Win7上,MATLAB 2015a):

>得到(你,’范围’) – [0,116,214]
> jHandle.getVisibleRect – java.awt.Rectangle [x = 0,y = 0,width = 116,height = 214]
> jHandle.getSize – java.awt.Dimension [width = 116,height = 214]
> jHandle.getPreferredSize – java.awt.Dimension [width = 116,height = 221]

现在问题是如何方便地获得PreferredSize(或jHandle,它可以从中检索)…

我使用的一个选项是findjobj实用程序,其用法与jHandle = findjobj(u)一样简单.

总结一下:

>将findjobj放在工作文件夹中.
>替换找到textize的两行:

>利润.

附:

我的推理可能有缺陷,对Swing的理解不正确,但这种解释对我来说更有意义,更重要的是 – 它有效.

大佬总结

以上是大佬教程为你收集整理的windows – 文本’Extent’属性不包含正确的大小全部内容,希望文章能够帮你解决windows – 文本’Extent’属性不包含正确的大小所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:font