我正在使用.getText()。split(&#34 ;;")来分隔JTextArea的输入。然后,我需要事后阅读每一行。问题:第一行之后的每一行似乎都以System.lineSeparator()开头,我无法弄清楚如何检测它。我正在尝试像.indexOf(System.lineSeparator())和.indexOf(" / n")这样的东西,但它没有被检测到。这叫什么?是的,我知道我可以告诉程序一旦它已经检查了第一行就采用行[c] .substring(1,lineLeft.length()),但必须有一个简单的解释为什么我不能找到"新线" indexOf()的东西。它还有助于防止我的程序中的错误使用indexOf()与新行。我正在制作像Jeroo这样的东西,以防你们想知道这是为了什么。要直观地查看我的问题,只需从互联网或PC上抓取足够大的图像并将其设置为"标记",然后更改TheRunner类中的frame.setSize()。但你可能已经知道了。然后,输入类似:
的内容喜;
喜;
进入JTextArea,然后单击打印按钮。你会看到这个问题。
import javax.swing.JFrame;
public class TheRunner{
public static void main(String[] args){
JFrame frame = new JFrame("My GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new Test());
frame.setVisible(true);
frame.setSize(640, 960);
}
}
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Test extends JPanel implements ActionListener{
JTextArea textArea = new JTextArea();
String lineLeft;
JButton button = new JButton("Print");
public Test(){
toDo();
}
public void toDo(){
JLabel label = new JLabel(new ImageIcon("C:\\00105_1.jpg"));
label.setLayout(null);
add(label);
label.add(textArea);
label.add(button);
button.setBounds(20, 230, 140, 60);
textArea.setBounds(20, 20, 400, 200);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == button){
String[] lines = textArea.getText().split(";");
for(int c = 0; c < lines.length; c++){
System.out.println(lines[c]);
}
System.out.println("First line starts with: " + lines[0].substring(0, 1));
System.out.println("Second line starts with: " + lines[1].substring(0, 1));
}
}
}
答案 0 :(得分:0)
我认为没有必要使用;
字符。如果您想从JTextArea获取每一行,您可以使用以下
String[] lines = textArea.getText().split("\n");