From f773ccb67c48f3c2e55a99a1fa2087cb88910b3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Sat, 7 Oct 2023 02:45:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Duibug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../left/sidebar/tools/SidebarToolBar.java | 2 + .../left/sidebar/tools/ToolHorizontalBox.java | 39 ------------------- .../root/top/menubar/menu/RunTopMenu.java | 26 +++++-------- temp.c | 7 ---- 5 files changed, 13 insertions(+), 62 deletions(-) delete mode 100644 src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolHorizontalBox.java delete mode 100644 temp.c diff --git a/.gitignore b/.gitignore index d1e3e13..06d0a2c 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ logs/ /jnotepadConfig.json /qodana.yaml .mvn/ +/main.c diff --git a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java b/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java index 8ee1ec4..a406e4a 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java @@ -1,5 +1,6 @@ package org.jcnc.jnotepad.views.root.left.sidebar.tools; +import javafx.geometry.Insets; import javafx.geometry.Orientation; import javafx.scene.control.Button; @@ -37,6 +38,7 @@ public class SidebarToolBar extends javafx.scene.control.ToolBar { private SidebarToolBar() { // 垂直排列 this.setOrientation(Orientation.VERTICAL); + this.setPadding(new Insets(1,5,0,0)); this.setOnMouseClicked(event -> { // SidebarToolBar 点击事件 }); 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 deleted file mode 100644 index 582c2b5..0000000 --- a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolHorizontalBox.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.jcnc.jnotepad.views.root.left.sidebar.tools; - -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import org.jcnc.jnotepad.component.module.base.AbstractHorizontalBox; - -/** - * ToolHBox 是 JNotepad 应用程序的工具栏水平布局类。 - * - *

该类继承自 JavaFX 的 HBox 类,用于将工具栏放置在水平布局中。

- * - *

工具栏水平布局中包含一个 JNotepadToolBar 的单例实例,并设置其子节点水平拉伸属性,以确保工具栏在水平方向上充分占用空间。

- * - * @author luke - */ -public class ToolHorizontalBox extends AbstractHorizontalBox { - /** - * 单例模式,保证只有一个 ToolHBox 实例 - */ - private static final ToolHorizontalBox INSTANCE = new ToolHorizontalBox(); - - private ToolHorizontalBox() { - // 设置子节点水平拉伸 - HBox.setHgrow(SidebarToolBar.getInstance(), Priority.ALWAYS); - - // 将 JNotepadToolBar 添加为子节点 - getChildren().add(SidebarToolBar.getInstance()); - getStyleClass().add("tool-horizontal-box"); - } - - /** - * 获取 ToolHBox 的单例实例。 - * - * @return ToolHBox 的单例实例 - */ - public static ToolHorizontalBox getInstance() { - return INSTANCE; - } -} diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java index b1a94d9..dec1581 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java @@ -24,7 +24,6 @@ import static org.jcnc.jnotepad.common.constants.TextConstants.RUN; * @author gewuyou */ public class RunTopMenu extends AbstractTopMenu { - CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected(); private static final BuildPanelManager BUILD_PANEL_MANAGER = BuildPanelManager.getInstance(); private static final BuildPanel BUILD_PANEL = BuildPanel.getInstance(); private static final RunTopMenu INSTANCE = new RunTopMenu(); @@ -64,22 +63,17 @@ public class RunTopMenu extends AbstractTopMenu { return runMenuItems; } - EventHandler codeRun = event -> { - // 创建一个TextArea用于输出编译后的结果 -// TextArea resultTextArea = new TextArea(); -// resultTextArea.setPrefRowCount(10); -// resultTextArea.setPrefColumnCount(40); -// resultTextArea.setEditable(false); // 禁止编辑 + EventHandler codeRun = event -> { // 获取TextCodeArea的文本内容 - CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected(); + String code = centerTab.getLineNumberTextArea().getText(); // TextCodeArea的当前文本内容 System.out.println("TextCodeArea的当前文本内容:" + code); - String fileName = "temp.c"; + String fileName = centerTab.getText(); // 将C代码写入临时文件 try (PrintWriter writer = new PrintWriter(new FileWriter(fileName))) { @@ -88,9 +82,8 @@ public class RunTopMenu extends AbstractTopMenu { LogUtil.getLogger(this.getClass()).info("正在写入:{}", code); } - // 编译和运行C代码 -// compileAndRunCode(fileName, resultTextArea); - compileAndRunCode(fileName); + // 编译C代码 + compileAndRunCode(fileName); }; /** @@ -98,8 +91,9 @@ public class RunTopMenu extends AbstractTopMenu { */ private void compileAndRunCode(String fileName) { try { + CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected(); // 创建ProcessBuilder并指定GCC编译命令 - ProcessBuilder processBuilder = new ProcessBuilder("gcc", fileName, "-o", "temp"); + ProcessBuilder processBuilder = new ProcessBuilder("gcc", fileName, "-o", centerTab.getText()); // 设置工作目录 processBuilder.directory(null); @@ -120,7 +114,7 @@ public class RunTopMenu extends AbstractTopMenu { System.out.println("编译成功!"); // 运行编译后的可执行文件 - Process runProcess = new ProcessBuilder("./temp").start(); + Process runProcess = new ProcessBuilder("./" + centerTab.getText()).start(); // 读取运行结果 BufferedReader runReader = new BufferedReader(new InputStreamReader(runProcess.getInputStream())); @@ -130,7 +124,7 @@ public class RunTopMenu extends AbstractTopMenu { } // 显示运行结果 BUILD_PANEL_MANAGER.controlShow(true); - BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getRunBox(),result.toString()); + BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getRunBox(), result.toString()); } else { System.out.println("编译失败,返回代码:" + compileExitCode); } @@ -152,7 +146,7 @@ public class RunTopMenu extends AbstractTopMenu { // 调试 test registerMenuItem(topMenuBar.getDeBugItem(), DE_BUG, "deBugItem", event -> { BUILD_PANEL_MANAGER.controlShow(true); - BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getBuildBox(),"待开发"); + BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getBuildBox(), "待开发"); }); diff --git a/temp.c b/temp.c deleted file mode 100644 index c817318..0000000 --- a/temp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include -int main() -{ - // printf() 中字符串需要引号 - printf("Hello, World1111!"); - return 0; -} \ No newline at end of file