Java 字包装在JTextArea中不起作用
为JTextArea提供的换行方法在我的程序中不起作用。为什么不起作用?我怎样才能修好它?代码如下:Java 字包装在JTextArea中不起作用,java,swing,jtextarea,word-wrap,Java,Swing,Jtextarea,Word Wrap,为JTextArea提供的换行方法在我的程序中不起作用。为什么不起作用?我怎样才能修好它?代码如下: text= new JTextArea(15,65); text.setWrapStyleWord(true); // word wrapping enabled text.setPreferredSize(new Dimension(getPreferredSize())); 这是截图。最后一个字超出了框架。 以下SSCCE允许您尝试这两种设置。在这里您可以看到,
text= new JTextArea(15,65);
text.setWrapStyleWord(true); // word wrapping enabled
text.setPreferredSize(new Dimension(getPreferredSize()));
这是截图。最后一个字超出了框架。
以下SSCCE允许您尝试这两种设置。在这里您可以看到,如果不首先调用
setLineWrap
,则使用setWrapStyleWord
没有任何效果。这也记录在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 );
}
} );
}
}
以下SSCCE允许您对这两种设置进行试验。在这里您可以看到,如果不首先调用
setLineWrap
,则使用setWrapStyleWord
没有任何效果。这也记录在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 );
}
} );
}
}
还有一点您没有告诉我们:您是否在JTextArea上调用了
setLineWrap(true)
?我在任何地方都没有看到这个帖子。您是否将JTextArea放置在JScrollPane中?您是否正确使用布局管理器并避免使用空布局和绝对定位?我甚至会比HFOE更进一步,发布3行代码既不能证明问题,也不能证明解决方案。只有一家公司能够真正帮助您或帮助我们为您找到解决方案。无论如何,您应该做的第一件事就是放弃这个调用:text.setPreferredSize(新维度(getPreferredSize())代码>。这只是在寻找麻烦…(顺便说一句,对维度的复制构造函数的调用是绝对不必要的)感谢充满EEL的气垫船,我没有使用setLineWrap()方法。它解决了我的问题还有一点您没有告诉我们:您是否在JTextArea上调用了setLineWrap(true)
?我在任何地方都没有看到这个帖子。您是否将JTextArea放置在JScrollPane中?您是否正确使用布局管理器并避免使用空布局和绝对定位?我甚至会比HFOE更进一步,发布3行代码既不能证明问题,也不能证明解决方案。只有一家公司能够真正帮助您或帮助我们为您找到解决方案。无论如何,您应该做的第一件事就是放弃这个调用:text.setPreferredSize(新维度(getPreferredSize())代码>。这只是在寻找麻烦…(顺便说一句,对维度的复制构造函数的调用是绝对不必要的)感谢充满EEL的气垫船,我没有使用setLineWrap()方法。这解决了我的问题problem@Alfredshot,runnable,compileable,about desciber idea:-)@Alfred shot,runnable,compileable,about desciber idea:-)