简体   繁体   English

Word Wrapping在JTextArea中不起作用

[英]Word Wrapping not working in JTextArea

The word wrapping method provided for JTextArea is not working in my program. 为JTextArea提供的自动换行方法在我的程序中不起作用。 Why isn't it working? 为什么不起作用? How can I fix it? 我该如何解决? Here is the code: 这是代码:

    text= new JTextArea(15,65);

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

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

Here is the screenshot. 这是屏幕截图。 The last word goes out of frame. 最后一个词不合框架。 在此处输入图片说明

The following SSCCE let you experiment with both settings. 通过以下SSCCE,您可以尝试两种设置。 Here you can see that using setWrapStyleWord has no effect if you do not call setLineWrap first. 在这里您可以看到,如果不先调用setLineWrap ,则使用setWrapStyleWord无效。 This is also documented in the javadoc of setWrapStyleWord . setWrapStyleWord的javadoc中也setWrapStyleWord

The best results for a readable form is setting them both to true. 可读形式的最佳结果是将它们都设置为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 );
      }
    } );

  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM