题目描述
用java swing做个简易记事本,要求如下
(1)记事本界面整体可以看做是一个容器窗口。
(2)从运行结果中的记事本界面的布局效果显示内容可以看出,该图形化界面有最小化、放大缩小以及关闭按钮,以及菜单栏、菜单、文本域。菜单栏可以使用JMenuBar实现,文本域可以使用JTextArea来实现,菜单可以使用JMenu来实现,菜单项可以使用JMenuItem来实现。
(3)为了使窗口可以最小化、放大缩小、关闭还必须为这些按钮注册监听器,进行相应的事件处理。
(4)定义一个程序入口,用于启动Swing案例程序。
案例代码
以下是用Java Swing实现简易记事本的代码案例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class SimpleNotepad extends JFrame {
private JTextArea textArea;
private JScrollPane scrollPane;
public SimpleNotepad() {
setTitle("简易记事本");
setSize(500, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea = new JTextArea();
scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem newMenuItem = new JMenuItem("新建");
JMenuItem openMenuItem = new JMenuItem("打开");
JMenuItem saveMenuItem = new JMenuItem("保存");
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
newMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
openMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(SimpleNotepad.this);
if (result == JFileChooser.APPROVE_OPTION) {
String filePath = fileChooser.getSelectedFile().getAbsolutePath();
openFile(filePath);
}
}
});
saveMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(SimpleNotepad.this);
if (result == JFileChooser.APPROVE_OPTION) {
String filePath = fileChooser.getSelectedFile().getAbsolutePath();
saveFile(filePath);
}
}
});
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int result = JOptionPane.showConfirmDialog(
SimpleNotepad.this,
"确认退出吗?",
"确认",
JOptionPane.YES_NO_OPTION
);
if (result == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
}
private void openFile(String filePath) {
// 读取文件内容并显示在文本域中
// 省略实现
}
private void saveFile(String filePath) {
// 将文本域中的内容保存到文件
// 省略实现
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SimpleNotepad notepad = new SimpleNotepad();
notepad.setVisible(true);
}
});
}
}
这个简易记事本程序的界面由一个文本域(JTextArea
)和菜单栏(JMenuBar
)组成。菜单栏包含一个文件菜单(JMenu
),文件菜单中有新建、打开、保存三个菜单项(JMenuItem
)。点击菜单项时,会触发相应的事件处理逻辑。
在main
方法中,使用SwingUtilities.invokeLater
来在Swing的事件分派线程上创建并显示记事本界面,以确保界面的创建与显示在主线程中是安全的。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END