为JTextArea提供的自动换行方法在我的程序中不起作用。为什么不工作?我该如何解决?这是代码:
text= new JTextArea(15,65);
text.setWrapStyleWord(true); // word wrapping enabled
text.setPreferredSize(new Dimension(getPreferredSize()));
这是截图。最后一句话不合时宜。
答案 0 :(得分:5)
以下SSCCE允许您尝试这两种设置。您可以在此处看到,如果您不先调用setWrapStyleWord
,则使用setLineWrap
无效。这也记录在setWrapStyleWord
的javadoc中。
可读表单的最佳结果是将它们都设置为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 );
}
} );
}
}