GUI
创建主窗口
Java中的JFrame的概述、常用方法、实现案例-优快云博客
import javax.swing.JFrame;
public class SimpleNotepad {
private JFrame frame;
public SimpleNotepad() {
frame = new JFrame("简易记事本");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void showWindow() {
frame.setVisible(true);
}
}
添加文本区域
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class SimpleNotepad {
// ... 前面的代码
private JTextArea textArea;
public SimpleNotepad() {
// ... 前面的代码
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
frame.add(scrollPane);
}
// ... 后面的代码
}
创建菜单栏
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
public class SimpleNotepad {
// ... 前面的代码
private JMenuBar menuBar;
private JMenu fileMenu, editMenu;
private JMenuItem newFileItem, openFileItem, saveFileItem;
public SimpleNotepad() {
// ... 前面的代码
menuBar = new JMenuBar();
fileMenu = new JMenu("文件");
editMenu = new JMenu("编辑");
newFileItem = new JMenuItem("新建");
openFileItem = new JMenuItem("打开...");
saveFileItem = new JMenuItem("保存");
fileMenu.add(newFileItem);
fileMenu.add(openFileItem);
fileMenu.add(saveFileItem);
menuBar.add(fileMenu);
menuBar.add(editMenu);
frame.setJMenuBar(menuBar);
}
// ... 后面的代码
}
实现菜单项功能
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class SimpleNotepad {
// ... 前面的代码
public SimpleNotepad() {
// ... 前面的代码
newFileItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
openFileItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Implement opening a file here
}
});
saveFileItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Implement saving a file here
}
});
}
// ... 后面的代码
}
文件打开与保存功能
JFileChooser (Java Swing提供的文件选择对话框)_setfileselectionmode-优快云博客
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import java.io.File;
public class FileChooserExample {
public void openFile(JFrame frame) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(frame); // 显示文件打开对话框
switch (result) {
case JFileChooser.APPROVE_OPTION:
File selectedFile = fileChooser.getSelectedFile(); // 获取用户选择的文件
System.out.println("Selected file: " + selectedFile.getAbsolutePath());
break;
case JFileChooser.CANCEL_OPTION:
System.out.println("Open command cancelled by user.");
break;
case JFileChooser.ERROR_OPTION:
System.out.println("Error in opening file dialog.");
break;
default:
// Handle other cases if necessary.
}
}
}
完整代码
package GUI;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class NoteJFrame {
private JFrame frame;
private JTextArea textArea;
private JScrollPane scrollPane;
//菜单栏
private JMenuBar menuBar;
private JMenu fileMenu;
private JMenuItem newFileItem,openFileItem,saveFileItem;
public NoteJFrame(){
frame = new JFrame("简易记事本");
frame.setSize(800,600);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加文本区域
textArea = new JTextArea();
scrollPane = new JScrollPane(textArea);
frame.add(scrollPane);
//菜单栏
menuBar = new JMenuBar();
fileMenu = new JMenu("文件");
newFileItem = new JMenuItem("新建");
openFileItem = new JMenuItem("打开");
saveFileItem = new JMenuItem("保存");
fileMenu.add(newFileItem);
fileMenu.add(openFileItem);
fileMenu.add(saveFileItem);
menuBar.add(fileMenu);
frame.setJMenuBar(menuBar);
//添加菜单功能
newFileItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
openFileItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION){
File selectedFile = fileChooser.getSelectedFile();
try(BufferedReader br = new BufferedReader(new FileReader(selectedFile))) {
StringBuilder content = new StringBuilder();
String line;
while((line = br.readLine())!=null){
content.append(line).append("\n");
}
textArea.setText(content.toString());
} catch (FileNotFoundException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
});
saveFileItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(null);
if(result == JFileChooser.APPROVE_OPTION){
File selectedFile = fileChooser.getSelectedFile();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(selectedFile))){
bw.write(textArea.getText());
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
});
}
public void showWindow(){
frame.setVisible(true);
}
}
Main.class
import GUI.NoteJFrame;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
NoteJFrame noteJFrame = new NoteJFrame();
noteJFrame.showWindow();
}
}