2011-08-23 19 views
7

A diferencia de JTextArea, JTextPane no tiene opción para desactivar el ajuste de línea. Encontré uno solution para desactivar el ajuste de línea en JTextPane s, pero parece demasiado detallado para un problema tan simple. ¿Hay una mejor manera de hacer esto?JTextPane alineamiento de línea

Respuesta

10

Ver No Wrap Text Pane. Aquí está el código incluido desde el enlace.

JTextPane textPane = new JTextPane(); 
JPanel noWrapPanel = new JPanel(new BorderLayout()); 
noWrapPanel.add(textPane); 
JScrollPane scrollPane = new JScrollPane(noWrapPanel); 
+1

Lo único que envuelve el '' JTextPane' en un JPanel' hizo fue desactivar la barra de desplazamiento vertical. – Jeffrey

+0

@Jeffrey, funciona bien para mí usando JDK6_7 (y versiones anteriores) en XP. No creo que me tome la molestia de crear una entrada de blog si no funciona. Publique su SSCCE que muestra cómo lo probó. – camickr

+0

SSCCE con imágenes publicadas. – Jeffrey

0

El No Wrap Text Pane también proporciona una solución alternativa que no requiere envolver el JTextPane en un JPanel, sino que anula getScrollableTracksViewportWidth(). Yo prefiero esa solución, pero no funcionó para mí: noté que aún se produce el ajuste si la ventana gráfica se vuelve más estrecha que el ancho mínimo del JTextPane.

Encontré que JEditorPane está anulando getPreferredSize() para tratar de 'arreglar' las cosas cuando la ventana gráfica es demasiado estrecha al devolver el ancho mínimo en lugar del ancho preferido. Esto se puede resolver reemplazando getPreferredSize() de nuevo para decir 'no, en realidad - siempre queremos el tamaño preferido real':

public class NoWrapJTextPane extends JTextPane { 
    @Override 
    public boolean getScrollableTracksViewportWidth() { 
     // Only track viewport width when the viewport is wider than the preferred width 
     return getUI().getPreferredSize(this).width 
      <= getParent().getSize().width; 
    }; 

    @Override 
    public Dimension getPreferredSize() { 
     // Avoid substituting the minimum width for the preferred width when the viewport is too narrow 
     return getUI().getPreferredSize(this); 
    }; 
} 
Cuestiones relacionadas