用java完成以下题目 1. 编程实现如下图功能,具体要求: (1)建立菜单 (2)“打开”功能:显示选择文件对话框,供用户选择文件。 (3)“保存”功能:将多行文本框中数据保存为原文件,如原文件不存在要求用户选择保存文件的路径和文件名。 (4)“另存为”功能:将当前多行文本框中数据用另一个文件名保存。 (5)“退出”功能:退出当前程序。
时间: 2023-12-10 08:41:37 浏览: 133
这是一个比较全面的功能,我会尽可能详细的给你解释和提供代码实现。
首先,我们需要用Java Swing库来构建GUI(图形用户界面)。Java Swing是Java语言的一种GUI工具包,它提供了一组丰富的GUI组件,包括文本框、标签、按钮、文本域等。
下面是代码实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileEditor extends JFrame implements ActionListener {
private JMenuBar menuBar;
private JMenu fileMenu;
private JMenuItem openMenuItem, saveMenuItem, saveAsMenuItem, exitMenuItem;
private JTextArea textArea;
private File currentFile;
public FileEditor() {
setTitle("File Editor");
setSize(600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 创建菜单
menuBar = new JMenuBar();
fileMenu = new JMenu("文件");
openMenuItem = new JMenuItem("打开");
saveMenuItem = new JMenuItem("保存");
saveAsMenuItem = new JMenuItem("另存为");
exitMenuItem = new JMenuItem("退出");
// 添加菜单项
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.add(saveAsMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
// 添加事件监听器
openMenuItem.addActionListener(this);
saveMenuItem.addActionListener(this);
saveAsMenuItem.addActionListener(this);
exitMenuItem.addActionListener(this);
// 创建文本区域
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane);
}
// 事件处理
public void actionPerformed(ActionEvent e) {
if (e.getSource() == openMenuItem) {
JFileChooser fileChooser = new JFileChooser(".");
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”
currentFile = fileChooser.getSelectedFile();
try {
BufferedReader reader = new BufferedReader(new FileReader(currentFile));
String line;
while ((line = reader.readLine()) != null) {
textArea.append(line + "\n");
}
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else if (e.getSource() == saveMenuItem) {
if (currentFile == null) {
JFileChooser fileChooser = new JFileChooser(".");
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”
currentFile = fileChooser.getSelectedFile();
}
}
if (currentFile != null) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(currentFile));
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else if (e.getSource() == saveAsMenuItem) {
JFileChooser fileChooser = new JFileChooser(".");
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”
File file = fileChooser.getSelectedFile();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(textArea.getText());
writer.close();
currentFile = file;
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else if (e.getSource() == exitMenuItem) {
System.exit(0);
}
}
public static void main(String[] args) {
FileEditor editor = new FileEditor();
editor.setVisible(true);
}
}
```
上面的代码中,我们定义了一个`FileEditor`类,继承自`JFrame`类,实现了`ActionListener`接口。在构造方法中,我们创建了菜单、文本区域,并添加了事件监听器。
在事件处理方法中,我们实现了打开、保存、另存为和退出功能。当用户点击“打开”菜单项时,会弹出文件选择对话框,用户选择要打开的文件后,程序会将文件中的内容读取到文本区域中。当用户点击“保存”菜单项时,如果当前已经打开了一个文件,则将文本区域中的内容保存到该文件中;否则,弹出文件保存对话框,用户选择要保存的文件后,程序将内容保存到该文件中。当用户点击“另存为”菜单项时,弹出文件保存对话框,用户选择要保存的文件后,程序将内容保存到该文件中,并将当前文件设置为该文件。当用户点击“退出”菜单项时,程序退出。
最后,在`main`方法中,我们创建了一个`FileEditor`对象,并将其设置为可见。
阅读全文