使用javax.swing实现高级文本编辑器
发布时间:2023-12-23 02:45:45
javax.swing是Java中用于创建图形用户界面的一套库。下面是一个使用javax.swing实现的简单的高级文本编辑器的示例代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class AdvancedTextEditor extends JFrame {
private JTextArea textArea;
private JFileChooser fileChooser;
public AdvancedTextEditor() {
setTitle("Advanced Text Editor");
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem openMenuItem = new JMenuItem("Open");
JMenuItem saveMenuItem = new JMenuItem("Save");
JMenuItem saveAsMenuItem = new JMenuItem("Save As");
JMenuItem exitMenuItem = new JMenuItem("Exit");
openMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(AdvancedTextEditor.this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (file.exists()) {
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
stringBuilder.append(line).append("
");
}
textArea.setText(stringBuilder.toString());
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
});
saveMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(AdvancedTextEditor.this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
saveAsMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(AdvancedTextEditor.this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
exitMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.add(saveAsMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new AdvancedTextEditor().setVisible(true);
}
});
}
}
上面的代码实现了一个具有打开、保存和另存为功能的高级文本编辑器。用户可以通过"File"菜单中的相应选项打开和保存文本文件。
这个编辑器使用了JTextArea来显示和编辑文本内容,并且包含了一个带有文件选择器的JMenuBar用于实现菜单功能。用户可以选择要打开和保存的文件,并将文件的内容显示在文本区域中。
你可以将这个示例代码复制到一个Java源文件中,然后编译并运行它,就可以看到一个简单的高级文本编辑器界面。
