1.点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。 2.点击sort按钮,则将文本域中以“DBa”和““RRi”开头的字符串提取出来,放到右边的文本域中。 3.点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。 请用Java图形界面的知识,编写以上软件。
时间: 2024-03-03 21:48:13 浏览: 82
JavaScript 文本域字体大小选择功能
好的,我会尽力回答您的问题。首先,您需要使用Java Swing来创建图形用户界面(GUI)。以下是一个简单的示例代码,具有三个按钮和两个文本区域:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextEditor extends JFrame implements ActionListener {
private JTextArea leftTextArea, rightTextArea;
private JButton readButton, sortButton, saveButton;
public TextEditor() {
// 设置窗口的标题
setTitle("文本编辑器");
// 创建左边的文本区域
leftTextArea = new JTextArea();
JScrollPane leftScrollPane = new JScrollPane(leftTextArea);
leftScrollPane.setPreferredSize(new Dimension(400, 300));
// 创建右边的文本区域
rightTextArea = new JTextArea();
JScrollPane rightScrollPane = new JScrollPane(rightTextArea);
rightScrollPane.setPreferredSize(new Dimension(400, 300));
// 创建三个按钮
readButton = new JButton("读取");
sortButton = new JButton("排序");
saveButton = new JButton("保存");
// 给三个按钮添加事件监听器
readButton.addActionListener(this);
sortButton.addActionListener(this);
saveButton.addActionListener(this);
// 创建面板,将左边的文本区域和读取按钮添加到面板中
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BorderLayout());
leftPanel.add(leftScrollPane, BorderLayout.CENTER);
leftPanel.add(readButton, BorderLayout.SOUTH);
// 创建面板,将右边的文本区域和排序、保存按钮添加到面板中
JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BorderLayout());
rightPanel.add(rightScrollPane, BorderLayout.CENTER);
rightPanel.add(sortButton, BorderLayout.NORTH);
rightPanel.add(saveButton, BorderLayout.SOUTH);
// 将左边和右边的面板添加到窗口中
getContentPane().setLayout(new GridLayout(1, 2));
getContentPane().add(leftPanel);
getContentPane().add(rightPanel);
// 设置窗口的大小和位置
setSize(800, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// 实现事件监听器的方法
public void actionPerformed(ActionEvent e) {
if (e.getSource() == readButton) {
// TODO: 读取文件并显示在左边的文本区域中
} else if (e.getSource() == sortButton) {
// TODO: 排序字符串并显示在右边的文本区域中
} else if (e.getSource() == saveButton) {
// TODO: 将右边的文本保存到文件中
}
}
public static void main(String[] args) {
TextEditor editor = new TextEditor();
editor.setVisible(true);
}
}
```
接下来,您需要实现事件监听器的三个方法,以完成您的要求。
1. 点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。
```java
public void actionPerformed(ActionEvent e) {
if (e.getSource() == readButton) {
// 弹出文件选择对话框
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
// 从选定的文件中读取文本
File file = fileChooser.getSelectedFile();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
reader.close();
leftTextArea.setText(sb.toString());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
```
2. 点击sort按钮,则将文本域中以“DBa”和““RRi”开头的字符串提取出来,放到右边的文本域中。
```java
public void actionPerformed(ActionEvent e) {
if (e.getSource() == sortButton) {
// 从左边的文本区域中获取文本
String text = leftTextArea.getText();
// 将文本按行分割成字符串数组
String[] lines = text.split("\n");
// 从字符串数组中提取以“DBa”和“RRi”开头的字符串
StringBuilder sb = new StringBuilder();
for (String line : lines) {
if (line.startsWith("DBa") || line.startsWith("RRi")) {
sb.append(line);
sb.append("\n");
}
}
// 将提取出来的字符串显示在右边的文本区域中
rightTextArea.setText(sb.toString());
}
}
```
3. 点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。
```java
public void actionPerformed(ActionEvent e) {
if (e.getSource() == saveButton) {
// 弹出文件保存对话框
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(rightTextArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
```
以上就是完整的代码示例,您只需要将它们整合到一起,即可实现您的要求。
阅读全文