我有一个使用系统外观的Java Swing程序:
UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ());
问题是在高DPI系统中,框架中的字体太小了。我如何使框架上的文本可读而不必更改所有框架的字体?我的程序是使用Java6编写的,有太多的框架需要修改。
我不能肯定这是否完全解决了这个问题,但显然高DPIJava在Java7中为Mac修复,在Java9中为Linux和Windows修复。
JEP 263:Windows和Linux上的HiDPI图形:http://openjdk.java.net/jeps/263
对应票:https://bugs.openjdk.java.net/browse/JDK-8055212
您可以实际修改外观的字体设置。。。
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);
}
}
}
}
}
我们使用类似的方法来增加/减少正在运行的应用程序的字体大小,以测试布局(并最终允许用户对字体大小进行一些额外的控制)
低密度120 dpi mdpi中密度160 dpi 高密度240 dpi XHDPI:2.0 HDPI:1.5 MDPI:1.0(基线) 这意味着,如果为xhdpi设备生成200x200映像,则应为hdpi生成150x150的相同资源,为mdpi生成100x100,最后为ldpi设备生成75x75映像 这是否意味着如果我以640x360为基线,我必须制作以下4组图像: 1)ldpi-大小480x2
本文向大家介绍写个方法获取屏幕的DPI相关面试题,主要包含被问及写个方法获取屏幕的DPI时的应答技巧和注意事项,需要的朋友参考一下
问题内容: 我正在开发一个需要屏幕DPI的应用程序。我检查了几个论坛,并获得了一个代码段,内容如下: 但是无论我的屏幕分辨率值是多少,该值都保持不变,为96。代码有什么问题? 对于同一件事,我得到了另一个代码,如下所示: 但是再一次,无论我的屏幕分辨率如何,返回的值都是相同的96。怎么了?我的代码是错误的还是我以错误的方式解释了它? 问题答案: 问题是没有人知道操作系统的确切物理尺寸,甚至连操作系
在Android系统中如何获得屏幕的可用高度?我需要的高度减去状态栏/菜单栏或任何其他可能在屏幕上的装饰,我需要它为所有设备工作。另外,我需要在onCreate函数中了解这一点。我知道这个问题以前有人问过,但我已经尝试过他们的解决方案,但没有一个奏效。以下是我尝试过的一些事情: 我已经在API7-17上测试了这段代码。不幸的是,在API 13的底部水平和垂直都有额外的空间,而在API 10、8和7
您好,我正在中制作一个游戏,我想知道如何以及最好的方式是在屏幕上添加游戏。以下是玩家健康状况小于或等于0的代码: 我不确定该怎么做,因为我试图使用另一个py呼叫游戏,但玩家死亡的时间被重置为0并返回,所以玩家死亡的地方可能发生任何事情吗?
我不明白以下几点: 三星Galaxy S3显示720px 1280px,屏幕尺寸为4.8英寸 因此,屏幕密度可以评估为305dpi 在Android屏幕支持推荐页面中,305dpi对应于“xhdpi”限定符 所以我的问题是:为什么运行在GS3上的应用程序会从“mdpi”限定符中获取资源? 作为更新,请参阅我的代码以测试它: main.xml: strings.xml文件夹{"值","值-ldpi"