* 用于创建 LineNumberTextArea 对象 */ public LineNumberTextArea() { - // 设置 LineNumberTextArea 的样式,包括边框和背景颜色 - this.setStyle( - "-fx-border-color:white;" + - "-fx-background-color:white" - ); + getStyleClass().add("line-number-text-area"); this.setParagraphGraphicFactory(LineNumberFactory.get(this)); initListeners(); - } /** @@ -55,6 +52,7 @@ public class LineNumberTextArea extends CodeArea { }); } + /** * 保存方法 */ @@ -79,6 +77,7 @@ public class LineNumberTextArea extends CodeArea { return; } + // 尝试使用BufferedWriter写入文件内容 try (BufferedWriter writer = new BufferedWriter(new FileWriter(file, tab.getCharset()))) { // 将新的文本内容写入文件 @@ -90,4 +89,5 @@ public class LineNumberTextArea extends CodeArea { LogUtil.getLogger(this.getClass()).info("已忽视IO异常!"); } } + } \ No newline at end of file diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/bottom/status/BottomStatusBox.java b/src/main/java/org/jcnc/jnotepad/views/root/center/main/bottom/status/BottomStatusBox.java index 4a064dcddb6249a2b37cf41d1756e23b095af813..e00b3ff0115d8aad7bb1b6c1b4ba96145fde2982 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/bottom/status/BottomStatusBox.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/center/main/bottom/status/BottomStatusBox.java @@ -3,6 +3,7 @@ package org.jcnc.jnotepad.views.root.center.main.bottom.status; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Label; +import javafx.scene.control.TextArea; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; import org.jcnc.jnotepad.common.constants.TextConstants; import org.jcnc.jnotepad.ui.module.AbstractHorizontalBox; diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java b/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java index db93f424eff433b3e64eada148563e562c797f69..634f31e0bd667f530617b430e0602b83dd9a27d5 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java @@ -1,6 +1,7 @@ package org.jcnc.jnotepad.views.root.center.main.center.tab; import javafx.scene.control.Tab; +import org.fxmisc.flowless.VirtualizedScrollPane; import org.jcnc.jnotepad.controller.config.AppConfigController; import org.jcnc.jnotepad.ui.module.LineNumberTextArea; @@ -37,7 +38,7 @@ public class CenterTab extends Tab { public CenterTab(String tabTitle, LineNumberTextArea textArea, Charset charset) { super(tabTitle); lineNumberTextArea = textArea; - this.setContent(lineNumberTextArea); + this.setContent(new VirtualizedScrollPane<>(lineNumberTextArea)); setAutoLine(AppConfigController.getInstance().getAutoLineConfig()); this.charset = charset; } @@ -56,7 +57,7 @@ public class CenterTab extends Tab { public void setAutoLine(boolean autoLine) { this.autoLine = autoLine; - lineNumberTextArea.setWrapText(autoLine); +// lineNumberTextArea.getMainTextArea().setWrapText(autoLine); } public LineNumberTextArea getLineNumberTextArea() { diff --git a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolHorizontalBox.java b/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolHorizontalBox.java index 0292664143762ff01ed2b88cbf10fb7e14da2025..bb5353b32d7f0fda03d028452b149ba0b6173615 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolHorizontalBox.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolHorizontalBox.java @@ -25,6 +25,7 @@ public class ToolHorizontalBox extends AbstractHorizontalBox { // 将 JNotepadToolBar 添加为子节点 getChildren().add(SidebarToolBar.getInstance()); + getStyleClass().add("tool-horizontal-box"); } /** diff --git a/src/main/resources/css/styles.css b/src/main/resources/css/styles.css index 1cdab11e577164606a4380e9877766f36eac53f4..05a3f3e2e3cadd80415ede790eb4194cf2b7d121 100644 --- a/src/main/resources/css/styles.css +++ b/src/main/resources/css/styles.css @@ -4,29 +4,7 @@ -fx-vbar-policy: as-needed; } -/*!* 不显示滚动条 *!*/ -/*.text-line-number .content {*/ -/* -fx-cursor: text;*/ -/* -fx-padding: 8px 1px 8px 5px;*/ -/*}*/ -.text-line-number .content { - -fx-padding: 8px 1px 8px 5px; -} -.text-line-number .scroll-bar:vertical { - -fx-pref-width: 1; - -fx-opacity: 0; -} -.text-line-number .scroll-bar:horizontal { - -fx-pref-height: 10; - -fx-opacity: 0; -} - -/* 主文本框区域样式 */ -.main-text-area { - -fx-border-color: white; - -fx-background-color: white; -} /* tab修改标签样式 */ .tab-title-editable { @@ -35,4 +13,25 @@ -fx-max-height: 20px; -fx-font-size: 14px; -fx-padding: 2px 2px 2px 2px; +} + +/*左侧边栏*/ +.tool-horizontal-box { + -fx-border-width: 0 1 0 0; + -fx-border-color: -color-border-default; +} + + +.paragraph-box:has-caret { + -fx-background-color: -color-neutral-muted +} + +.line-number-text-area .paragraph-box .text { + /*-fx-fill: -color-fg-default;*/ + /* -fx-font-size: 18px;*/ +} + +.lineno { + -fx-background-color: -color-bg-default; + /*-fx-padding: 0 10 0 0;*/ } \ No newline at end of file