Java Swing在高DPI屏幕上
发布时间:2020-12-14 05:07:33 所属栏目:Java 来源:网络整理
导读:我有一个使用系统外观的 Java Swing程序: UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ()); 问题是在高DPI系统上,框架中的字体太小了.如何使我的框架上的文本可读,而无需更改所有框架的字体?我的程序是使用Java 6编写的,并且有太
我有一个使用系统外观的
Java Swing程序:
UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ()); 问题是在高DPI系统上,框架中的字体太小了.如何使我的框架上的文本可读,而无需更改所有框架的字体?我的程序是使用Java 6编写的,并且有太多的框架来修改. 解决方法
您可以物理修改外观和感觉的字体设置…
import java.awt.EventQueue; import java.awt.Font; import java.util.Set; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class Test { public static void main(String[] args) { new Test(); } public Test() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { ex.printStackTrace(); } setDefaultSize(24); JFrame frame = new JFrame("Testing"); frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JLabel("Happy as a pig in a blanket")); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public static void setDefaultSize(int size) { Set<Object> keySet = UIManager.getLookAndFeelDefaults().keySet(); Object[] keys = keySet.toArray(new Object[keySet.size()]); for (Object key : keys) { if (key != null && key.toString().toLowerCase().contains("font")) { System.out.println(key); Font font = UIManager.getDefaults().getFont(key); if (font != null) { font = font.deriveFont((float)size); UIManager.put(key,font); } } } } } 我们使用类似的方法来增加/减少正在运行的应用程序的字体大小来测试布局(并最终允许用户对字体大小进行一些额外的控制) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |