使用 .split 后如何检查 JTextArea 中的输入键命令?
How can i check for enter key command in JTextArea after using .split?
我正在使用 .getText().split(";") 来分隔 JTextArea 的输入。然后,之后我需要阅读每一行。问题:第一行之后的每一行似乎都以 System.lineSeparator() 开头,我不知道如何检测它。我正在尝试 .indexOf(System.lineSeparator()) 和 .indexOf("/n") 之类的方法,但未检测到。这叫什么?是的,我知道我可以告诉程序在检查完第一行后使用 lines[c].substring(1, lineLeft.length()) ,但是必须有一个简单的解释来解释为什么我找不到带有 indexOf() 的 "new line" 东西。将 indexOf() 与新行一起使用也有助于防止我的程序中出现错误。我正在制作类似 Jeroo 的东西,以防你们想知道这是干什么用的。要直观地查看我的问题,只需从互联网或您的 PC 上抓取任何足够大的图像并将其设置为 "label",然后更改 TheRunner class 中的 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));
}
}
}
我认为没有必要使用;
字符。如果你想从 JTextArea 中获取每一行,你可以使用以下
String[] lines = textArea.getText().split("\n");
我正在使用 .getText().split(";") 来分隔 JTextArea 的输入。然后,之后我需要阅读每一行。问题:第一行之后的每一行似乎都以 System.lineSeparator() 开头,我不知道如何检测它。我正在尝试 .indexOf(System.lineSeparator()) 和 .indexOf("/n") 之类的方法,但未检测到。这叫什么?是的,我知道我可以告诉程序在检查完第一行后使用 lines[c].substring(1, lineLeft.length()) ,但是必须有一个简单的解释来解释为什么我找不到带有 indexOf() 的 "new line" 东西。将 indexOf() 与新行一起使用也有助于防止我的程序中出现错误。我正在制作类似 Jeroo 的东西,以防你们想知道这是干什么用的。要直观地查看我的问题,只需从互联网或您的 PC 上抓取任何足够大的图像并将其设置为 "label",然后更改 TheRunner class 中的 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));
}
}
}
我认为没有必要使用;
字符。如果你想从 JTextArea 中获取每一行,你可以使用以下
String[] lines = textArea.getText().split("\n");