1)记事本拥有一个菜单栏,下面部分分成2个部分:文本域部分和功能键部分。 2)记事本菜单栏中有两个菜单“文件”和“信息”,其中“文件”菜单包括两个菜单项“新建”和“保存”;“信息”菜单点击后弹出该记事本的作者信息。 3)记事本“新建”菜单项点击之后,可以刷新文本域,代表打开一个新的文本文件;记事本“保存”菜单项点击之后,可以弹出一个对话框,该对话框中包括一个文本框,可输入文本文件的保存路径和文件名,同时包括一个按钮“确定”可以将文本域中的内容,按照文本框中指定的文本保存路径和文件名进行保存。 4)记事本功能键部分包括2个按钮:“统计”和“清空”,“统计”按钮可弹出对话框给出当前文本域中的字符数量,“清空”按钮则清空文本域。(使用java中的jframe进行编写)
时间: 2023-10-21 17:03:40 浏览: 119
好的,这是一个关于Java Swing界面编程的问题。下面是代码实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileWriter;
import java.io.IOException;
public class NotePad extends JFrame implements ActionListener {
private JTextArea textArea = new JTextArea();
private JButton countButton = new JButton("统计");
private JButton clearButton = new JButton("清空");
public NotePad() {
// 设置窗口标题
setTitle("记事本");
// 设置菜单栏
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenu infoMenu = new JMenu("信息");
JMenuItem newMenuItem = new JMenuItem("新建");
JMenuItem saveMenuItem = new JMenuItem("保存");
JMenuItem authorMenuItem = new JMenuItem("作者信息");
newMenuItem.addActionListener(this);
saveMenuItem.addActionListener(this);
authorMenuItem.addActionListener(this);
fileMenu.add(newMenuItem);
fileMenu.add(saveMenuItem);
infoMenu.add(authorMenuItem);
menuBar.add(fileMenu);
menuBar.add(infoMenu);
setJMenuBar(menuBar);
// 设置文本域部分
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
add(scrollPane, BorderLayout.CENTER);
// 设置功能键部分
JPanel buttonPanel = new JPanel(new GridLayout(1, 2));
countButton.addActionListener(this);
clearButton.addActionListener(this);
buttonPanel.add(countButton);
buttonPanel.add(clearButton);
add(buttonPanel, BorderLayout.SOUTH);
// 设置窗口大小和位置
setSize(500, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new NotePad();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("新建")) {
textArea.setText("");
} else if (e.getActionCommand().equals("保存")) {
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showSaveDialog(this);
if (option == JFileChooser.APPROVE_OPTION) {
String filePath = fileChooser.getSelectedFile().getPath();
try {
FileWriter writer = new FileWriter(filePath);
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else if (e.getActionCommand().equals("作者信息")) {
JOptionPane.showMessageDialog(this, "作者:xxx");
} else if (e.getSource() == countButton) {
int count = textArea.getText().length();
JOptionPane.showMessageDialog(this, "字符数:" + count);
} else if (e.getSource() == clearButton) {
textArea.setText("");
}
}
}
```
注意:保存文件时可能会抛出IOException,需要进行异常处理。
阅读全文