From 597062153a05f37620445ed045c6e949e29c0ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 24 Aug 2023 23:16:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8D=A2=E8=A1=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jcnc/jnotepad/ui/LineNumberTextArea.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java b/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java index 510bd4a..5198e78 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java +++ b/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java @@ -41,18 +41,26 @@ public class LineNumberTextArea extends BorderPane { "-fx-border-color:white;" + "-fx-background-color:white" ); + + initListeners(); + setCenter(mainTextArea); setLeft(lineNumberArea); - initListeners(); + } private void initListeners() { // 当主要文本区域的垂直滚动位置发生变化时,使行号文本区域的滚动位置保持一致 - mainTextArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> lineNumberArea.setScrollTop(mainTextArea.getScrollTop())); + mainTextArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> { + lineNumberArea.setScrollTop(mainTextArea.getScrollTop()); + }); // 当行号文本区域的垂直滚动位置发生变化时,使主要文本区域的滚动位置保持一致 - lineNumberArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> mainTextArea.setScrollTop(lineNumberArea.getScrollTop())); + lineNumberArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> { + mainTextArea.setScrollTop(lineNumberArea.getScrollTop()); + }); + lineNumberArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberWidth()); this.mainTextArea.caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> JNotepadStatusBox.getInstance().updateWordCountStatusLabel()); @@ -126,9 +134,10 @@ public class LineNumberTextArea extends BorderPane { lineNumberText.append(i).append("\n"); } lineNumberArea.setText(lineNumberText.toString()); + // 恢复之前的滚动位置 mainTextArea.setScrollTop(mainTextAreaScrollTop); - lineNumberArea.setScrollTop(lineNumberAreaScrollTop - 8); + lineNumberArea.setScrollTop(lineNumberAreaScrollTop-8); } public TextArea getMainTextArea() {