修复uibug
This commit is contained in:
parent
edb9bab320
commit
f773ccb67c
1
.gitignore
vendored
1
.gitignore
vendored
@ -55,3 +55,4 @@ logs/
|
|||||||
/jnotepadConfig.json
|
/jnotepadConfig.json
|
||||||
/qodana.yaml
|
/qodana.yaml
|
||||||
.mvn/
|
.mvn/
|
||||||
|
/main.c
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.views.root.left.sidebar.tools;
|
package org.jcnc.jnotepad.views.root.left.sidebar.tools;
|
||||||
|
|
||||||
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Orientation;
|
import javafx.geometry.Orientation;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
|
|
||||||
@ -37,6 +38,7 @@ public class SidebarToolBar extends javafx.scene.control.ToolBar {
|
|||||||
private SidebarToolBar() {
|
private SidebarToolBar() {
|
||||||
// 垂直排列
|
// 垂直排列
|
||||||
this.setOrientation(Orientation.VERTICAL);
|
this.setOrientation(Orientation.VERTICAL);
|
||||||
|
this.setPadding(new Insets(1,5,0,0));
|
||||||
this.setOnMouseClicked(event -> {
|
this.setOnMouseClicked(event -> {
|
||||||
// SidebarToolBar 点击事件
|
// SidebarToolBar 点击事件
|
||||||
});
|
});
|
||||||
|
|||||||
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -24,7 +24,6 @@ import static org.jcnc.jnotepad.common.constants.TextConstants.RUN;
|
|||||||
* @author gewuyou
|
* @author gewuyou
|
||||||
*/
|
*/
|
||||||
public class RunTopMenu extends AbstractTopMenu {
|
public class RunTopMenu extends AbstractTopMenu {
|
||||||
CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected();
|
|
||||||
private static final BuildPanelManager BUILD_PANEL_MANAGER = BuildPanelManager.getInstance();
|
private static final BuildPanelManager BUILD_PANEL_MANAGER = BuildPanelManager.getInstance();
|
||||||
private static final BuildPanel BUILD_PANEL = BuildPanel.getInstance();
|
private static final BuildPanel BUILD_PANEL = BuildPanel.getInstance();
|
||||||
private static final RunTopMenu INSTANCE = new RunTopMenu();
|
private static final RunTopMenu INSTANCE = new RunTopMenu();
|
||||||
@ -65,21 +64,16 @@ public class RunTopMenu extends AbstractTopMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EventHandler<ActionEvent> codeRun = event -> {
|
EventHandler<ActionEvent> codeRun = event -> {
|
||||||
// 创建一个TextArea用于输出编译后的结果
|
|
||||||
// TextArea resultTextArea = new TextArea();
|
|
||||||
// resultTextArea.setPrefRowCount(10);
|
|
||||||
// resultTextArea.setPrefColumnCount(40);
|
|
||||||
// resultTextArea.setEditable(false); // 禁止编辑
|
|
||||||
|
|
||||||
// 获取TextCodeArea的文本内容
|
// 获取TextCodeArea的文本内容
|
||||||
|
|
||||||
CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected();
|
CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected();
|
||||||
|
|
||||||
String code = centerTab.getLineNumberTextArea().getText();
|
String code = centerTab.getLineNumberTextArea().getText();
|
||||||
|
|
||||||
// TextCodeArea的当前文本内容
|
// TextCodeArea的当前文本内容
|
||||||
System.out.println("TextCodeArea的当前文本内容:" + code);
|
System.out.println("TextCodeArea的当前文本内容:" + code);
|
||||||
|
|
||||||
String fileName = "temp.c";
|
String fileName = centerTab.getText();
|
||||||
|
|
||||||
// 将C代码写入临时文件
|
// 将C代码写入临时文件
|
||||||
try (PrintWriter writer = new PrintWriter(new FileWriter(fileName))) {
|
try (PrintWriter writer = new PrintWriter(new FileWriter(fileName))) {
|
||||||
@ -88,8 +82,7 @@ public class RunTopMenu extends AbstractTopMenu {
|
|||||||
LogUtil.getLogger(this.getClass()).info("正在写入:{}", code);
|
LogUtil.getLogger(this.getClass()).info("正在写入:{}", code);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编译和运行C代码
|
// 编译C代码
|
||||||
// compileAndRunCode(fileName, resultTextArea);
|
|
||||||
compileAndRunCode(fileName);
|
compileAndRunCode(fileName);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -98,8 +91,9 @@ public class RunTopMenu extends AbstractTopMenu {
|
|||||||
*/
|
*/
|
||||||
private void compileAndRunCode(String fileName) {
|
private void compileAndRunCode(String fileName) {
|
||||||
try {
|
try {
|
||||||
|
CenterTab centerTab = CenterTabPaneManager.getInstance().getSelected();
|
||||||
// 创建ProcessBuilder并指定GCC编译命令
|
// 创建ProcessBuilder并指定GCC编译命令
|
||||||
ProcessBuilder processBuilder = new ProcessBuilder("gcc", fileName, "-o", "temp");
|
ProcessBuilder processBuilder = new ProcessBuilder("gcc", fileName, "-o", centerTab.getText());
|
||||||
|
|
||||||
// 设置工作目录
|
// 设置工作目录
|
||||||
processBuilder.directory(null);
|
processBuilder.directory(null);
|
||||||
@ -120,7 +114,7 @@ public class RunTopMenu extends AbstractTopMenu {
|
|||||||
System.out.println("编译成功!");
|
System.out.println("编译成功!");
|
||||||
|
|
||||||
// 运行编译后的可执行文件
|
// 运行编译后的可执行文件
|
||||||
Process runProcess = new ProcessBuilder("./temp").start();
|
Process runProcess = new ProcessBuilder("./" + centerTab.getText()).start();
|
||||||
|
|
||||||
// 读取运行结果
|
// 读取运行结果
|
||||||
BufferedReader runReader = new BufferedReader(new InputStreamReader(runProcess.getInputStream()));
|
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.controlShow(true);
|
||||||
BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getRunBox(),result.toString());
|
BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getRunBox(), result.toString());
|
||||||
} else {
|
} else {
|
||||||
System.out.println("编译失败,返回代码:" + compileExitCode);
|
System.out.println("编译失败,返回代码:" + compileExitCode);
|
||||||
}
|
}
|
||||||
@ -152,7 +146,7 @@ public class RunTopMenu extends AbstractTopMenu {
|
|||||||
// 调试 test
|
// 调试 test
|
||||||
registerMenuItem(topMenuBar.getDeBugItem(), DE_BUG, "deBugItem", event -> {
|
registerMenuItem(topMenuBar.getDeBugItem(), DE_BUG, "deBugItem", event -> {
|
||||||
BUILD_PANEL_MANAGER.controlShow(true);
|
BUILD_PANEL_MANAGER.controlShow(true);
|
||||||
BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getBuildBox(),"待开发");
|
BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getBuildBox(), "待开发");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user