为 JTextArea 提供的自动换行方法在我的程序中不起作用。为什么它不起作用?我该如何解决?这是代码:
text= new JTextArea(15,65);
text.setWrapStyleWord(true); // word wrapping enabled
text.setPreferredSize(new Dimension(getPreferredSize()));
这是屏幕截图。最后一个词超出框架。
以下 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 );
}
} );
}
}