在Windows 7中,如果您通过控制面板->外观和个性化->显示“使文本和其他项变大或缩小”更改字体大小,则不仅会调整菜单大小,还会调整诸如记事本、WordPad、Firefox之类的应用程序的文本内容大小。
有没有一种方法可以让Java自动缩放字体而无需手动缩放?
有没有一种方法可以让Java自动缩放字体而无需手动缩放?
这个问题分两个方面:
对于Swing来说,第一个方面很容易- 一切都始于一个调用。
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
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缩放。这将使您的容器按比例缩放,并应有助于限制诸如标签由于大小而移动到下一行之类的行为。如果使用对话框单位确定帧的大小,则可以使其看起来相同,只是更大。
现在就到这里吧,太晚了。