用java代码实现上述功能
时间: 2024-03-07 18:48:27 浏览: 22
好的,下面是一个简单的 JavaFX 文本编辑器示例代码,包含打开、保存、查找和替换功能:
```java
import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import java.io.*;
public class SimpleTextEditor extends Application {
private TextArea textArea;
private File currentFile;
@Override
public void start(Stage primaryStage) {
// 创建文本区和菜单栏
textArea = new TextArea();
MenuBar menuBar = new MenuBar();
// 创建菜单项
Menu fileMenu = new Menu("文件");
MenuItem openMenuItem = new MenuItem("打开");
MenuItem saveMenuItem = new MenuItem("保存");
MenuItem exitMenuItem = new MenuItem("退出");
fileMenu.getItems().addAll(openMenuItem, saveMenuItem, new SeparatorMenuItem(), exitMenuItem);
Menu editMenu = new Menu("编辑");
MenuItem findMenuItem = new MenuItem("查找");
MenuItem replaceMenuItem = new MenuItem("替换");
editMenu.getItems().addAll(findMenuItem, replaceMenuItem);
// 设置菜单栏
menuBar.getMenus().addAll(fileMenu, editMenu);
// 设置菜单项的事件处理函数
openMenuItem.setOnAction(event -> openFile());
saveMenuItem.setOnAction(event -> saveFile());
exitMenuItem.setOnAction(event -> Platform.exit());
findMenuItem.setOnAction(event -> findText());
replaceMenuItem.setOnAction(event -> replaceText());
// 设置界面布局
BorderPane root = new BorderPane();
root.setTop(menuBar);
root.setCenter(textArea);
BorderPane.setMargin(menuBar, new Insets(5, 10, 5, 10));
BorderPane.setMargin(textArea, new Insets(10));
// 创建场景和窗口
Scene scene = new Scene(root, 600, 400);
primaryStage.setScene(scene);
primaryStage.setTitle("简单文本编辑器");
primaryStage.show();
}
// 打开文件事件处理函数
private void openFile() {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("打开文件");
File selectedFile = fileChooser.showOpenDialog(textArea.getScene().getWindow());
if (selectedFile != null) {
try {
BufferedReader reader = new BufferedReader(new FileReader(selectedFile));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
textArea.setText(sb.toString());
currentFile = selectedFile;
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 保存文件事件处理函数
private void saveFile() {
if (currentFile != null) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(currentFile));
writer.write(textArea.getText());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
saveAsFile();
}
}
// 另存为事件处理函数
private void saveAsFile() {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("另存为");
File selectedFile = fileChooser.showSaveDialog(textArea.getScene().getWindow());
if (selectedFile != null) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(selectedFile));
writer.write(textArea.getText());
writer.close();
currentFile = selectedFile;
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 查找事件处理函数
private void findText() {
TextInputDialog dialog = new TextInputDialog();
dialog.setTitle("查找");
dialog.setHeaderText(null);
dialog.setContentText("请输入要查找的文本:");
dialog.showAndWait().ifPresent(text -> {
int index = textArea.getText().indexOf(text);
if (index >= 0) {
textArea.selectRange(index, index + text.length());
} else {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("查找");
alert.setHeaderText(null);
alert.setContentText("没有找到指定的文本!");
alert.showAndWait();
}
});
}
// 替换事件处理函数
private void replaceText() {
TextInputDialog dialog = new TextInputDialog();
dialog.setTitle("替换");
dialog.setHeaderText(null);
dialog.setContentText("请输入要查找的文本:");
dialog.showAndWait().ifPresent(text -> {
int index = textArea.getText().indexOf(text);
if (index >= 0) {
TextInputDialog replaceDialog = new TextInputDialog();
replaceDialog.setTitle("替换");
replaceDialog.setHeaderText(null);
replaceDialog.setContentText("请输入要替换的文本:");
replaceDialog.showAndWait().ifPresent(replaceText -> {
textArea.replaceText(index, index + text.length(), replaceText);
});
} else {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("替换");
alert.setHeaderText(null);
alert.setContentText("没有找到指定的文本!");
alert.showAndWait();
}
});
}
public static void main(String[] args) {
launch(args);
}
}
```
以上代码是一个简单的 JavaFX 文本编辑器示例代码,包含打开、保存、查找和替换功能。