1.点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。 2.点击sort按钮,则将文本域中以“DBa”和““RRi”开头的字符串提取出来,放到右边的文本域中。 3.点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。 请用Java图形界面的知识,编写代码
时间: 2024-03-09 11:47:36 浏览: 85
好的,以下是代码实现:
```
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class TextEditor {
private JFrame frame;
private JTextArea textArea1;
private JTextArea textArea2;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TextEditor window = new TextEditor();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TextEditor() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 600, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
textArea1 = new JTextArea();
JScrollPane scrollPane1 = new JScrollPane(textArea1);
frame.getContentPane().add(scrollPane1, BorderLayout.WEST);
textArea2 = new JTextArea();
JScrollPane scrollPane2 = new JScrollPane(textArea2);
frame.getContentPane().add(scrollPane2, BorderLayout.EAST);
JPanel buttonPanel = new JPanel();
JButton readButton = new JButton("Read");
readButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
FileReader fr = new FileReader("path/to/file.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
textArea1.append(line + "\n");
}
br.close();
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
buttonPanel.add(readButton);
JButton sortButton = new JButton("Sort");
sortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String[] lines = textArea1.getText().split("\n");
for (String line : lines) {
if (line.startsWith("DBa") || line.startsWith("RRi")) {
textArea2.append(line + "\n");
}
}
}
});
buttonPanel.add(sortButton);
JButton saveButton = new JButton("Save");
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
FileWriter fw = new FileWriter("path/to/new_file.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(textArea2.getText());
bw.close();
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
buttonPanel.add(saveButton);
frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
}
}
```
在上面的代码中,我们定义了一个`TextEditor`类,它包含一个`JFrame`窗口和两个`JTextArea`文本域。我们使用`JScrollPane`将文本域放在滚动窗格中,以便在文本太长时可以滚动显示。我们还定义了三个按钮:`Read`,`Sort`和`Save`,并为它们添加了单击事件监听器。在`Read`按钮的单击事件监听器中,我们使用`FileReader`和`BufferedReader`读取文本文件中的内容,并将其显示在左侧文本域中。在`Sort`按钮的单击事件监听器中,我们使用`String`的`startsWith`方法检查每一行是否以`DBa`或`RRi`开头,并将符合条件的行添加到右侧文本域中。在`Save`按钮的单击事件监听器中,我们使用`FileWriter`和`BufferedWriter`将右侧文本域中的内容写入新文件中。
请注意,你需要将“path/to/file.txt”替换为你自己的文件路径。同样,你需要将“path/to/new_file.txt”替换为你想要保存文件的路径和名称。
阅读全文