texto mostrar ejemplo color java swing user-interface jlabel

java - mostrar - La alineación vertical JLabel no funciona como se esperaba



mostrar texto en jlabel java (2)

El texto en su etiqueta ya está alineado con la parte superior. Incluso si establece los tres de:

label.setVerticalAlignment(JLabel.TOP); label.setVerticalTextPosition(JLabel.TOP); panel.setAlignmentY(TOP_ALIGNMENT);

usted todavía encontraría esa brecha.

El problema está relacionado con font-metrics. La fuente deja espacio para los signos diacríticos, y aunque los números en inglés e incluso las letras no contienen signos diacríticos en mayúsculas, Arial definitivamente contiene una amplia gama de caracteres internacionales, incluso más altos que una letra mayúscula, por ejemplo, diéresis (ÄÜÜ) o caracteres alemanes que contiene signos diacríticos portugueses (Á?).

Si desea una solución rápida y fácil que sea un truco, que no se adapte bien a fuentes y plataformas, puede usar un valor negativo en un borde para compensar las métricas de fuente.

label.setBorder(BorderFactory.createEmptyBorder( -3 /*top*/, 0, 0, 0 ));

Si desea corregirlo "correctamente", debe buscar información sobre el paquete FontMetrics , ya que tiene muchas funciones que podrían ser útiles para calcular la altura real y la ubicación del texto que se muestra, de modo que pueda mover toda la cadena por la cantidad apropiada de píxeles.

Font font = Font("Arial", Font.BOLD, 35); JLabel label = new JLabel("57"); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS)); panel.add(label);

Esto crea un JLabel con un espacio extra por encima y por debajo. Intenté setVerticalAlignment(SwingConstants.TOP) pero no funcionaba. De nuevo, no quiero alinear JLabel a la parte superior, pero el texto dentro de JLabel debe estar alineado a la parte superior.

así es como se ve mi etiqueta


La flecha en su diagrama apunta a la diferencia entre el ascenso nominal del glifo y el ascenso máximo , como se explica en FontMetrics . Puede jugar con setBorder(null) ; pero para un control absoluto, deberá renderizar los glifos usted mismo, como se muestra aquí . Afortunadamente, los glifos de dígitos de la mayoría de las fuentes tienen un avance y un ascenso uniformes.