加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java自动调整到Windows 7的字体大小调整

发布时间:2020-12-14 17:44:14 所属栏目:Java 来源:网络整理
导读:在 Windows 7中,如果您通过控制面板更改字体大小 – 外观和个性化 – 显示“使文本和其他项目更大或更
在 Windows 7中,如果您通过控制面板更改字体大小 – >外观和个性化 – >显示“使文本和其他项目更大或更小”,它不仅可以调整菜单大小,还可以调整记事本,写字板,Firefox等应用程序的文本内容大小.

有没有办法让Java自动缩放字体而不必手动缩放它?

解决方法

这有两个部分:

>获取您的组件,字体等
规模化
>获取您的布局
规模

对于Swing来说,第一部分很容易 – 一切都从一个电话开始.

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

在Windows上,这将使其符合您的小/大字体(DPI)设置.

这里有一个快速测试应用程序的两个屏幕截图,它们在Windows 7 @ 96dpi(普通字体)和@ 144dpi(150%)中显示在我的机器上的外观,

首先默认的字体大小示例:

现在更大(150%)字体大小设置:

运行之间没有代码更改,只能注销&回到新的DPI设置.我设定了一个固定的框架大小,以证明我的容器没有缩放大小,这导致我的标签被推下来以适应.

这是我的源代码 – cut&粘贴并自行运行:

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class SwingFontTest
{
    private static void createGUI()
    {
        JButton button = new JButton("my button with Some Text");
        JLabel label = new JLabel("and a label");

        JPanel panel = new JPanel(new FlowLayout());
        panel.add(button);
        panel.add(label);

        JFrame frame = new JFrame("Title!");
        frame.setContentPane(panel);
        frame.setSize(300,125);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args)
    {
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run()
            {
                createGUI();
            }
        });
    }

}

外观&感觉提供默认的大小,但是由GUI作者在布局中使用可扩展单元.它确实需要努力(可扩展的布局也是网页上的一个痛苦),但它是绝对可以实现的.

我建议使用像FormLayout这样的布局,让您可以在对话框单元(DLU)中定义布局,因为这些使用DPI进行缩放.这将使您能够使您的容器尺寸缩小,并应有助于限制由于尺寸调整到标签移动到下一行的行为.如果使用对话单元确定框架的大小,则可以使其看起来相同,只有较大的.

现在已经很晚了 – 现在就这样了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读