修复uibug

This commit is contained in:
许轲 2023-10-07 02:45:09 +08:00
parent edb9bab320
commit f773ccb67c
5 changed files with 13 additions and 62 deletions

1
.gitignore vendored
View File

@ -55,3 +55,4 @@ logs/
/jnotepadConfig.json
/qodana.yaml
.mvn/
/main.c

View File

@ -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 点击事件
});

View File

@ -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 应用程序的工具栏水平布局类
*
* <p>该类继承自 JavaFX HBox 用于将工具栏放置在水平布局中</p>
*
* <p>工具栏水平布局中包含一个 JNotepadToolBar 的单例实例并设置其子节点水平拉伸属性以确保工具栏在水平方向上充分占用空间</p>
*
* @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;
}
}

View File

@ -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();
@ -65,21 +64,16 @@ public class RunTopMenu extends AbstractTopMenu {
}
EventHandler<ActionEvent> codeRun = event -> {
// 创建一个TextArea用于输出编译后的结果
// TextArea resultTextArea = new TextArea();
// resultTextArea.setPrefRowCount(10);
// resultTextArea.setPrefColumnCount(40);
// resultTextArea.setEditable(false); // 禁止编辑
// 获取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,8 +82,7 @@ public class RunTopMenu extends AbstractTopMenu {
LogUtil.getLogger(this.getClass()).info("正在写入:{}", code);
}
// 编译和运行C代码
// compileAndRunCode(fileName, resultTextArea);
// 编译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(), "待开发");
});

7
temp.c
View File

@ -1,7 +0,0 @@
#include <stdio.h>
int main()
{
// printf() 中字符串需要引号
printf("Hello, World1111!");
return 0;
}