Saltar al contenido

Cortar el texto de un JLabel a la izquierda

La guía o código que encontrarás en este artículo es la solución más eficiente y válida que encontramos a tus dudas o problema.

Solución:

Esto no proporciona los puntos suspensivos iniciales (…), pero al menos es simple y limpio. Puede colocar el JLabel en un JViewport y mantenerlo desplazado hasta el final en todo momento:

JViewport viewport = new JViewport();
viewport.setView(label);
viewport.addComponentListener(new ComponentAdapter() 
    @Override
    public void componentResized(ComponentEvent event) 
        int width = viewport.getWidth();
        Dimension size = label.getPreferredSize();
        viewport.setViewPosition(new Point(size.width - width, 0));
    
);

Usando la excelente respuesta de trashgod (https://stackoverflow.com/a/3597688/567496), aquí hay una implementación simple de un BasicLabelUI que crea una elipsis del lado izquierdo.

Sí usa Apache StringUtils.reverse(text), pero solo por comodidad. Se podría reemplazar con llamadas a StringBuilder(text).reverse().toString().

static class LeftEllipsisUI extends BasicLabelUI 
    @Override
    protected String layoutCL(JLabel label, FontMetrics fontMetrics, String text, Icon icon, Rectangle viewR, Rectangle iconR, Rectangle textR) 
        return StringUtils.reverse(super.layoutCL(label, fontMetrics, StringUtils.reverse(text), icon, viewR, iconR, textR));
    

Si eres capaz, tienes la opción de dejar una crónica acerca de qué te ha impresionado de este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *