修复:关闭最后一个标签页时下方数据不刷新的问题。
This commit is contained in:
parent
013c47d81e
commit
08005c73c5
@ -109,5 +109,13 @@ public interface ControllerInterface {
|
|||||||
*/
|
*/
|
||||||
void initTabPane();
|
void initTabPane();
|
||||||
|
|
||||||
void updateUIWithNewTextArea(LineNumberTextArea textArea);
|
/**
|
||||||
|
* 更新UI和标签页
|
||||||
|
*
|
||||||
|
* @param textArea 文本域
|
||||||
|
* @apiNote
|
||||||
|
* @since 2023/8/20 12:40
|
||||||
|
*/
|
||||||
|
|
||||||
|
void updateUiWithNewTextArea(LineNumberTextArea textArea);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,7 +66,7 @@ public class LunchApp extends Application {
|
|||||||
threadPool.execute(() -> {
|
threadPool.execute(() -> {
|
||||||
LineNumberTextArea textArea = controller.openAssociatedFileAndCreateTextArea(rawParameters);
|
LineNumberTextArea textArea = controller.openAssociatedFileAndCreateTextArea(rawParameters);
|
||||||
if (!Objects.isNull(textArea)) {
|
if (!Objects.isNull(textArea)) {
|
||||||
Platform.runLater(() -> controller.updateUIWithNewTextArea(textArea));
|
Platform.runLater(() -> controller.updateUiWithNewTextArea(textArea));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,18 +16,20 @@ import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
|||||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 控制器类,实现ControllerInterface接口,用于管理文本编辑器的各种操作和事件处理。
|
* 控制器类,实现ControllerInterface接口,用于管理文本编辑器的各种操作和事件处理。
|
||||||
* 包括打开关联文件、创建文本区域、处理行分隔、新建文件、打开文件、自动保存等功能。
|
* 包括打开关联文件、创建文本区域、处理行分隔、新建文件、打开文件、自动保存等功能。
|
||||||
|
*
|
||||||
|
* @author 许轲
|
||||||
*/
|
*/
|
||||||
public class Controller implements ControllerInterface {
|
public class Controller implements ControllerInterface {
|
||||||
|
|
||||||
private static final Controller INSTANCE = new Controller();
|
private static final Controller INSTANCE = new Controller();
|
||||||
|
|
||||||
private Controller() {
|
private Controller() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Controller getInstance() {
|
public static Controller getInstance() {
|
||||||
@ -228,26 +230,35 @@ public class Controller implements ControllerInterface {
|
|||||||
@Override
|
@Override
|
||||||
public void initTabPane() {
|
public void initTabPane() {
|
||||||
Controller controller = new Controller();
|
Controller controller = new Controller();
|
||||||
|
|
||||||
ViewManager.tabPane.getSelectionModel().selectedItemProperty().addListener((observable, oldTab, newTab) -> {
|
ViewManager.tabPane.getSelectionModel().selectedItemProperty().addListener((observable, oldTab, newTab) -> {
|
||||||
|
LineNumberTextArea textArea;
|
||||||
if (newTab != null) {
|
if (newTab != null) {
|
||||||
// 获取新选定的标签页并关联的文本区域
|
// 获取新选定的标签页并关联的文本区域
|
||||||
LineNumberTextArea textArea = (LineNumberTextArea) newTab.getContent();
|
textArea = (LineNumberTextArea) newTab.getContent();
|
||||||
|
} else {
|
||||||
// 更新状态标签
|
// 刷新状态
|
||||||
controller.updateStatusLabel(textArea);
|
textArea = openAssociatedFileAndCreateTextArea(new ArrayList<>());
|
||||||
|
|
||||||
// 监听文本光标位置的变化,更新状态标签
|
|
||||||
textArea.getMainTextArea().caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> controller.updateStatusLabel(textArea));
|
|
||||||
|
|
||||||
// 更新编码标签
|
|
||||||
controller.upDateEncodingLabel(textArea.getMainTextArea().getText());
|
|
||||||
}
|
}
|
||||||
|
// 更新状态标签
|
||||||
|
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
|
@Override
|
||||||
public void updateUIWithNewTextArea(LineNumberTextArea textArea) {
|
public void updateUiWithNewTextArea(LineNumberTextArea textArea) {
|
||||||
Tab tab = new Tab("新建文件 " + (++ViewManager.tabIndex));
|
Tab tab = new Tab("新建文件 " + (++ViewManager.tabIndex));
|
||||||
tab.setContent(textArea);
|
tab.setContent(textArea);
|
||||||
ViewManager.tabPane.getTabs().add(tab);
|
ViewManager.tabPane.getTabs().add(tab);
|
||||||
@ -255,6 +266,7 @@ public class Controller implements ControllerInterface {
|
|||||||
updateStatusLabel(textArea);
|
updateStatusLabel(textArea);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配置文本区域。
|
* 配置文本区域。
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user