1

为 JTextArea 提供的自动换行方法在我的程序中不起作用。为什么它不起作用?我该如何解决?这是代码:

    text= new JTextArea(15,65);

    text.setWrapStyleWord(true); // word wrapping enabled

    text.setPreferredSize(new Dimension(getPreferredSize()));

这是屏幕截图。最后一个词超出框架。 在此处输入图像描述

4

1 回答 1

5

以下 SSCCE 可让您试验这两种设置。在这里你可以看到setWrapStyleWord如果你不setLineWrap先调用 using 是没有效果的。这也记录在setWrapStyleWord.

可读形式的最佳结果是将它们都设置为 true。

在此处输入图像描述

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class TextAreaDemo {

  public static void main( String[] args ) {
    EventQueue.invokeLater( new Runnable() {
      @Override
      public void run() {
        JFrame testFrame = new JFrame( "TestFrame" );

        final JTextArea textArea = new JTextArea( 15, 65 );
        testFrame.add( new JScrollPane( textArea ) );

        final JCheckBox wordWrap = new JCheckBox( "word wrap" );
        wordWrap.setSelected( textArea.getWrapStyleWord() );
        wordWrap.addItemListener( new ItemListener() {
          @Override
          public void itemStateChanged( ItemEvent e ) {
            textArea.setWrapStyleWord( wordWrap.isSelected() );
          }
        } );
        testFrame.add( wordWrap, BorderLayout.NORTH );
        final JCheckBox lineWrap = new JCheckBox( "line wrap" );
        lineWrap.setSelected( textArea.getLineWrap() );
        lineWrap.addItemListener( new ItemListener() {
          @Override
          public void itemStateChanged( ItemEvent e ) {
            textArea.setLineWrap( lineWrap.isSelected() );
          }
        } );
        testFrame.add( lineWrap, BorderLayout.SOUTH );

        testFrame.pack();
        testFrame.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
        testFrame.setVisible( true );
      }
    } );

  }
}
于 2012-11-18T15:31:59.897 回答