У меня проблемы с пониманием этой идеи.У меня есть 1 основной контроллер, и теперь я хочу перенести свои зависимости из контроллера в класс TextAreaController, когда я хочу, например, добавить значение textArea.Так что это хорошая идея, чтобы создать в конструкторе класса TextAreaController с полями из контроллера (например, textArea и textField) и затем в контроллере инициализировать мой класс TextAreaController?Итак, следующий вопрос заключается в том, что в контроллере должны быть только обработчики событий?И это хорошая идея, чтобы назвать TextAreaController в качестве контроллера?
Вот ссылка на код, если вы можете просмотреть его, я буду благодарен.
public class MainViewController implements Initializable {
@FXML
private TextArea textArea;
@FXML
private TextField textField;
@FXML
private MenuItem menuItem;
private DataFromTxtFile outputDataFromFile;
private TextAreaController inputText;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
textArea.appendText("Wybierz plik źródłowy z tekstem: File -> Load new file\n" );
outputDataFromFile = new DataFromTxtFile();
inputText = new TextAreaController(textField,textArea);
}
public void onClick(ActionEvent actionEvent){
menuItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
try {
inputText.setLines(outputDataFromFile.readLineFromFile());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public void pressedEnter(ActionEvent actionEvent){
textField.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
if(keyEvent.getCode().equals(KeyCode.ENTER)){
try {
inputText.addToTextArea();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
}
}
public class TextAreaController {
private TextField textField;
private TextArea textArea;
private Queue<String> lines;
TextAreaController(TextField textField, TextArea textArea){
this.textField = textField;
this.textArea = textArea;
}
public void addToTextArea() throws IOException {
if(lines.size() == 0) //TODO co wtedy
textArea.appendText(lines.poll()+"\n");
}
public void setLines(Queue<String> lines) {
this.lines = lines;
}
}