Saltar al contenido

¿Cómo ajustar texto en JLabel?

Solución:

Un enfoque común es no utilizar un JLabel y en su lugar usa un JTextArea con ajuste de texto y ajuste de línea activados. Luego puede decorar el JTextArea para que parezca un JLabel (borde, color de fondo, etc.). [Edited to include line-wrap for completeness per DSquare’s comment]

Otro enfoque es usar HTML en su etiqueta, como se ve aquí. Las advertencias que hay

  1. Es posible que deba cuidar ciertos caracteres que HTML puede interpretar / convertir de texto sin formato

  2. Vocación myLabel.getText() ahora contendrá HTML (con caracteres posiblemente de escape y / o convertidos debido a # 1

EDITAR: Aquí hay un ejemplo del enfoque JTextArea:

ingrese la descripción de la imagen aquí

import javax.swing.*;

public class JLabelLongTextDemo implements Runnable
{
  public static void main(String args[])
  {
    SwingUtilities.invokeLater(new JLabelLongTextDemo());
  }

  public void run()
  {
    JLabel label = new JLabel("Hello");

    String text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
//        String text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " + 
//                      "quick brown fox jumped over the lazy dog.";

    JTextArea textArea = new JTextArea(2, 20);
    textArea.setText(text);
    textArea.setWrapStyleWord(true);
    textArea.setLineWrap(true);
    textArea.setOpaque(false);
    textArea.setEditable(false);
    textArea.setFocusable(false);
    textArea.setBackground(UIManager.getColor("Label.background"));
    textArea.setFont(UIManager.getFont("Label.font"));
    textArea.setBorder(UIManager.getBorder("Label.border"));

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(label, BorderLayout.NORTH);
    frame.getContentPane().add(textArea, BorderLayout.CENTER);
    frame.setSize(100,200);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}
¡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 *