reales - Java Swing en la pantalla de alta DPI
libro de android studio en español pdf (1)
Tengo un programa Java Swing que usa System Look And Feel:
UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ());
El problema es que en un sistema de alta resolución de ppp, las fuentes en los marcos son demasiado pequeñas. ¿Cómo puedo hacer que el texto en mis cuadros sea legible sin tener que cambiar las fuentes para TODOS los marcos? Mi programa fue escrito usando Java 6 y tiene demasiados marcos para modificar.
Podría modificar físicamente la configuración de fuente de la apariencia ...
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);
}
}
}
}
}
Utilizamos un enfoque similar para aumentar / disminuir el tamaño de fuente de la aplicación en ejecución para probar diseños (y eventualmente permitir al usuario un control adicional sobre el tamaño de la fuente)