!14 修复了关闭最后一个页面时,下方数据依旧是最后一个页面的bug

Merge pull request !14 from 格物方能致知/master
This commit is contained in:
Luke 2023-08-20 08:32:38 +00:00 committed by Gitee
commit a767c9978d
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 35 additions and 15 deletions

View File

@ -109,5 +109,13 @@ public interface ControllerInterface {
*/
void initTabPane();
void updateUIWithNewTextArea(LineNumberTextArea textArea);
/**
* 更新UI和标签页
*
* @param textArea 文本域
* @apiNote
* @since 2023/8/20 12:40
*/
void updateUiWithNewTextArea(LineNumberTextArea textArea);
}

View File

@ -66,7 +66,7 @@ public class LunchApp extends Application {
threadPool.execute(() -> {
LineNumberTextArea textArea = controller.openAssociatedFileAndCreateTextArea(rawParameters);
if (!Objects.isNull(textArea)) {
Platform.runLater(() -> controller.updateUIWithNewTextArea(textArea));
Platform.runLater(() -> controller.updateUiWithNewTextArea(textArea));
}
});
}

View File

@ -16,18 +16,20 @@ import org.jcnc.jnotepad.ui.LineNumberTextArea;
import org.jcnc.jnotepad.view.manager.ViewManager;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* 控制器类实现ControllerInterface接口用于管理文本编辑器的各种操作和事件处理
* 包括打开关联文件创建文本区域处理行分隔新建文件打开文件自动保存等功能
*
* @author 许轲
*/
public class Controller implements ControllerInterface {
private static final Controller INSTANCE = new Controller();
private Controller() {
}
public static Controller getInstance() {
@ -228,26 +230,35 @@ public class Controller implements ControllerInterface {
@Override
public void initTabPane() {
Controller controller = new Controller();
ViewManager.tabPane.getSelectionModel().selectedItemProperty().addListener((observable, oldTab, newTab) -> {
LineNumberTextArea textArea;
if (newTab != null) {
// 获取新选定的标签页并关联的文本区域
LineNumberTextArea textArea = (LineNumberTextArea) newTab.getContent();
// 更新状态标签
controller.updateStatusLabel(textArea);
// 监听文本光标位置的变化更新状态标签
textArea.getMainTextArea().caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> controller.updateStatusLabel(textArea));
// 更新编码标签
controller.upDateEncodingLabel(textArea.getMainTextArea().getText());
textArea = (LineNumberTextArea) newTab.getContent();
} else {
// 刷新状态
textArea = openAssociatedFileAndCreateTextArea(new ArrayList<>());
}
// 更新状态标签
controller.updateStatusLabel(textArea);
// 监听文本光标位置的变化更新状态标签
textArea.getMainTextArea().caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> controller.updateStatusLabel(textArea));
// 更新编码标签
controller.upDateEncodingLabel(textArea.getMainTextArea().getText());
});
}
/**
* 更新UI和标签页
*
* @param textArea 文本域
* @apiNote
* @since 2023/8/20 12:40
*/
@Override
public void updateUIWithNewTextArea(LineNumberTextArea textArea) {
public void updateUiWithNewTextArea(LineNumberTextArea textArea) {
Tab tab = new Tab("新建文件 " + (++ViewManager.tabIndex));
tab.setContent(textArea);
ViewManager.tabPane.getTabs().add(tab);
@ -255,6 +266,7 @@ public class Controller implements ControllerInterface {
updateStatusLabel(textArea);
}
/**
* 配置文本区域
*