Quiero establecer una fuente específica para todos los componentes en un JPanel
pero prefiero que la pregunta sea aún más general y no se limite a JPanel. ¿Cómo puedo configurar la fuente en una lista de componentes en un contenedor (JFrame o JPanel)?Establecer la misma fuente para todos los componentes Java
Respuesta
Establezca los valores de fuente en UIManager
para los componentes que desea cambiar. Por ejemplo, se puede establecer el tipo de letra utilizado para las etiquetas haciendo:
Font labelFont = ... ;
UIManager.put("Label.font", labelFont);
Tenga en cuenta que un aspecto diferente y se siente (L & F) pueden tener diferentes propiedades de la clase UIManager
, por lo que si se cambia de una L & F a otro, puede tener problemas.
- Puede utilizar UIManager
hacer esto ....
Ej:
public class FrameTest {
public static void setUIFont(FontUIResource f) {
Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
UIManager.put(key, new FontUIResource(font));
}
}
}
public static void main(String[] args) throws InterruptedException {
setUIFont(new FontUIResource(new Font("Arial", 0, 20)));
JFrame f = new JFrame("Demo");
f.getContentPane().setLayout(new BorderLayout());
JPanel p = new JPanel();
p.add(new JLabel("hello"));
p.setBorder(BorderFactory.createTitledBorder("Test Title"));
f.add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
Si uso UIManager, cambio la fuente al componente en toda la aplicación, pero no quiero cambiarlo solo en un 'JFrame' o' JPanel' específico. Gracias – Luca
Aquí es un método simple que le permite especificar la fuente al árbol de componentes enteros bajo cualquier contenedor (o simplemente un componente simple, no importa):
public static void changeFont (Component component, Font font)
{
component.setFont (font);
if (component instanceof Container)
{
for (Component child : ((Container) component).getComponents())
{
changeFont (child, font);
}
}
}
Simplemente pase y nuestro panel y la fuente específica en este método y obtendrá todos los niños también refactorizados.
Impresionante, está funcionando bien, he cambiado el código de este tipo, y me está ayudando, estoy publicando ese código en la Respuesta –
Inspirado en Mikle Granos respuesta utilicé su código para aumentar la fuente de cada componente en porcentaje en marcha el viejo tamaño de fuente
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(),f.getStyle(),f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
changeFont(child, fontSize);
}
}
}
- 1. ¿Cómo eliminar todos los componentes de un JFrame en Java?
- 2. Java Swing: Activando/Desactivando todos los componentes en JPanel
- 3. ¿La misma variable para todos php?
- 4. Fuente diferente para todos los títulos en LaTeX
- 5. iTextSharp: ¿es posible establecer un color de fuente diferente para la misma celda y fila?
- 6. Establecer fuente predeterminada para SWT Shell
- 7. Compruebe si todos los artículos tienen la misma clase
- 8. ¿Qué es Scala para encontrar si todos los elementos de una matriz tienen la misma longitud?
- 9. Para Java, ¿puedo importar todos los paquetes a la vez?
- 10. Los componentes tienen la misma identificación dentro de la interfaz de usuario: repite
- 11. Java Ver Componentes JPanel
- 12. ¿La referencia estática a HttpContext.Current.Session devuelve la misma sesión para todos los usuarios?
- 13. ¿Cómo cambio todos los tamaños de fuente en Eclipse?
- 14. establecer UIButton fuente
- 15. Configuración de la fuente global para una aplicación Java
- 16. Symfony: ¿Es posible configurarTemplate para los componentes?
- 17. Usando Hadoop, ¿están garantizados mis reductores para obtener todos los registros con la misma clave?
- 18. ¿Cómo reutilizo los componentes en ExtJS?
- 19. Android - Cómo establecer una fuente personalizada para la aplicación entera
- 20. ¿Ejecuta simultáneamente los programas Java ejecutados en la misma JVM?
- 21. java swing dinámicamente agregar componentes
- 22. ¿Hay alguna razón para establecer la causa de la excepción en sí misma?
- 23. ¿Cómo establecer el tamaño de fuente de String, el estilo en Java usando la clase Font?
- 24. Establecer la fuente de la fuente predeterminada de Emacs por búfer/modo
- 25. Cuál es la diferencia entre los componentes .NET y los componentes COM
- 26. ¿Cómo se especifican los atributos de fuente para todos los elementos en una página web html?
- 27. Java, establecer ID para JButton
- 28. Cómo establecer la sangría de los elementos de la matriz en el código fuente de Java Script en Eclipse?
- 29. Pika + RabbitMQ: establecer basic_qos para prefetch = 1 todavía parece consumir todos los mensajes en la cola
- 30. ¿Regex Java para eliminar todos los números finales?
Si uso UIManager puedo cambiar el tipo de letra para el componente en toda la aplicación, pero yo no quiero cambiarlo solo en un 'JFrame' o' JPanel' específico. Gracias – Luca