我正在尝试从数据文件中读取信息并将其处理为JTextArea
以获取我正在制作的术语项目的about文件。问题是,当我scanner.nextLine()
时,它正在扩展文本区域以适应文本,我想要的是保持文本区域的大小相同,如果它在当前行上的空间不足则开始在
if(event.getSource() == forward)
{
text.setText(s.nextLine());
}
文本区域设置如下:
text = new JTextArea(11, 30);
基本上我想知道的是,如果有一个文本区域提供的方法(我看),如果当前已满,则将空间重定位到下一行。如果没有办法在文本区域中进行编辑,我很可能只编辑数据文件。
答案 0 :(得分:8)
将JTextArea
放在JScrollPane
内,然后将滚动窗格添加到容器中
text = new JTextArea(11, 30);
JScrollPane scrollpane = new JScrollPane(text);
//...
add(scrollpane);
有关详细信息,请参阅How to use Scroll Panes
这将阻止滚动窗格在当前容器中增长。
同时查看JTextArea#setLineWrap
和JTextArea#setWrapStyleWord
,这将影响该组件如何处理超出可查看宽度的文字。
有关详细信息,请参阅How to use Text Areas
答案 1 :(得分:2)
默认情况下,您可以将JTextArea#setLineWrap(true)设置为false。
设置文本区域的换行策略。如果设置为true则 如果行太长而无法放入已分配的行,则会对其进行换行 宽度。如果设置为false,则将始终打开行。一个 更改策略时会触发PropertyChange事件(“lineWrap”)。 默认情况下,此属性为false。
另请参阅此方法JTextArea#setWrapStyleWord(true)
SSCCE示例:
public class JTextAreaTest {
public static void main(String args[]){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.add(panel);
JTextArea textArea = new JTextArea(11,30);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setText("Hi how are you? Im testing this textarea and im seeing if it's wrapping words");
textArea.append("SASASASASDASDASDASDASDASDADSASDASDASDASDAS");
JScrollPane scrollPane = new JScrollPane(textArea);
panel.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
}