gpt4 book ai didi

java - JTextArea 中的换行符

转载 作者:行者123 更新时间:2023-12-01 09:44:44 27 4
gpt4 key购买 nike

我正在尝试显示 JTextArea 中文件中的文本。问题是,JTextArea 不显示任何换行符。如果我尝试以如下方式显示文本:`

FileHandler fh = new FileHandler();                 
String text = fh.loadFile("src/Files/info.txt");

textArea = new JTextArea(text);
textArea.setSize(350, 350);
textArea.setVisible(true);
textArea.setEditable(false);
textArea.setFocusable(false);
textArea.setBorder(null);

this.add(textArea);

text 字符串的内容为第一行\n第二行\n 第三行。TextArea 仅显示以下输出:第一行\n第二行\n第三行

但是如果我像这样手动设置文本:

String text = "Line one\nLine two\n Line three"`

换行符正确显示。

最佳答案

有几种方法可以实现此目的,但我发现最简单的方法是将换行符替换为系统换行符,如下所示:

text = text.replaceAll("\\\\n", System.getProperty("line.separator"));

因此,当遇到指定的系统换行符时,它不会将\n 作为字符串打印,而是将其替换为字符串,这是我的示例。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;


public class StackQuestions {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
JPanel middlePanel = new JPanel();
middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));
String file =readFile("file.txt");


// create the middle panel components
JTextArea display = new JTextArea(16, 58);
display.setEditable(false); // set textArea non-editable
display.setText(file);
JScrollPane scroll = new JScrollPane(display);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

//Add Textarea in to middle panel
middlePanel.add(scroll);

// My code
JFrame frame = new JFrame();
frame.add(middlePanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} catch (IOException ex) {
Logger.getLogger(StackQuestions.class.getName()).log(Level.SEVERE, null, ex);
}
}

static String readFile(String fileName) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(fileName));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();

while (line != null) {
line = line.replaceAll("\\\\n", System.getProperty("line.separator"));
sb.append(line);
//sb.append("\n");
line = br.readLine();
}
return sb.toString();
} finally {
br.close();
}
}
}

无论如何我希望这会有所帮助:)

关于java - JTextArea 中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38158820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com