[英]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.