나는 이것을 잠시 동안 알아 내려고 노력했지만 제대로 작동하지는 못합니다. 본질적으로 JavaFX TextArea가 있고 Enter 키를 누른 후 캐럿 위의 행과 같이 입력의 마지막 줄에 CommandWrapper라는 새 Object를 생성하려고합니다.JavaFX TextArea에 String.split()이있는 빈 줄이 포함되어 있습니까?
이 : 나는 그것을 완벽하게 작동 명령을 입력 한 후 ENTER하지만 아래의 GIF에 표시된에는 명령 재를 입력하지 않으면 어떤 이유로 내 사항 String.split() 함수는 늘 빈 줄을 얻을 명중 할 때마다 이 문제에 관한 코드 :
package com.mswordhf.jnet.java.contollers;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;
import com.mswordhf.jnet.java.models.JnetModel;
import com.mswordhf.jnet.java.modules.CommandWrapper;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextArea;
import javafx.scene.input.KeyCode;
public class CmdController implements Initializable {
private JnetModel model;
private int clientIndex;
@FXML private TextArea commandTextArea;
public CmdController(JnetModel model, int clientIndex) {
this.model = model;
this.clientIndex = clientIndex;
}
@Override
public void initialize(URL url, ResourceBundle rb) {
commandTextArea.setOnKeyPressed(keyEvent -> {
if(keyEvent.getCode() == KeyCode.ENTER) {
List<String> lines = Arrays.asList(commandTextArea.getText().split("\\n"));
String command = lines.get(lines.size() - 1);
System.out.println(command);
if(command == "\n") {
System.out.println("Worked");
}else {
CommandWrapper wrapper = new CommandWrapper(command);
model.getClients().get(clientIndex).getHandle().sendModule(wrapper);
if(!model.getCmdOutput.isRunning()) {
model.getCmdOutput.reset();
model.getCmdOutput.start();
}
}
}
});
model.getCmdOutput.setOnSucceeded(event -> {
for(String line : model.getCmdOutput.getValue()) {
commandTextArea.appendText(line + "\n");
}
model.clearList();
});
}
}
'=='원시 ('int','char','double' ...) 평등을 검사하고 객체를 검사하기 위해'.equals (...)'를 사용합니다 ('String','Object ', ...) 평등. 또한 ['String # split'] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split (java.lang.String))에는 정규식이 포함되어 있지 않습니다. 문자열은 결과 배열에서와 분리되었습니다. 'if (command.equals ("\\ n"))'가 항상 false가된다는 것을 의미합니다. 아마도 빈 문자열 인'if (command.equals (""))'를 검사해야합니다. –
@JonnyHenly 의견을 주셔서 감사합니다. 그리고 당신 말이 맞아요. 나는 equals()를 사용해야했지만 문제가 남아 있습니다. 필자는 'println (command)'이 항상 Enter 키를 누른 후 캐럿에서 2 행을 인쇄하기 때문에 마지막 빈 행이 'String # split()'에 의해 선택되지 않는다고 생각합니다. –