71 votos

Cómo cambiar el tamaño de la fuente de una JLabel para que tome el tamaño máximo

Tengo una JLabel en un Container. El tamaño predeterminado de la fuente es muy pequeño. Me gustaría que el texto del JLabel tomara el tamaño máximo.

¿Cómo puedo hacerlo? Gracias :)

108voto

Asaf David Puntos 1448
label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));

tomado de Cómo utilizar HTML en los componentes Swing

77voto

coobird Puntos 70356

No es el código más bonito, pero lo siguiente elegirá un tamaño de letra apropiado para un JLabel llamado label de tal manera que el texto del interior se ajuste al máximo sin desbordar la etiqueta:

Font labelFont = label.getFont();
String labelText = label.getText();

int stringWidth = label.getFontMetrics(labelFont).stringWidth(labelText);
int componentWidth = label.getWidth();

// Find out how much the font can grow in width.
double widthRatio = (double)componentWidth / (double)stringWidth;

int newFontSize = (int)(labelFont.getSize() * widthRatio);
int componentHeight = label.getHeight();

// Pick a new font size so it will not be larger than the height of label.
int fontSizeToUse = Math.min(newFontSize, componentHeight);

// Set the label's font size to the newly determined size.
label.setFont(new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse));

Básicamente, el código se fija en el espacio que ocupa el texto en el JLabel toma mediante el uso de la FontMetrics y, a continuación, utiliza esa información para determinar el mayor tamaño de fuente que se puede utilizar sin desbordar el texto del JLabel .

El código anterior puede ser insertado en quizás el paint método de la JFrame que mantiene el JLabel o algún método que sea invocado cuando se necesite cambiar el tamaño de la fuente.

La siguiente es una captura de pantalla del código anterior en acción:

alt text

10voto

Ehsan Horrible Puntos 51
 JLabel textLabel = new JLabel("<html><span style='font-size:20px'>"+Text+"</span></html>");

4voto

Bekim Fetaji Puntos 41

Código fuente de la etiqueta - Cómo cambiar el color y la fuente (en Netbeans)

jLabel1.setFont(new Font("Serif", Font.BOLD, 12));

jLabel1.setForeground(Color.GREEN);

4voto

ataullahtoffar Puntos 41
JLabel label = new JLabel("Hello World");
label.setFont(new Font("Calibri", Font.BOLD, 20));

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X