因为还没有学到java的IO流,所以那部分功能还没有添加上。
在此做一下记录,后面学完IO流,继续把这个小项目完善。
package com.swing;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class NotePadDemo {
public static void main(String[] args) {
new MyFrame("记事本");
}
}
class MyFrame extends JFrame{
//多行文本框JTextArea
private JTextArea tv_area=null;
private JScrollPane s_pane=null;//带滚动条的面板
private JMenuBar mb=null;//菜单栏
private JMenu m_file=null;//文件菜单
private JMenu m_help=null;//帮助菜单
private JMenuItem item_new=null;//菜单项--新建
private JMenuItem item_open=null;//菜单项--打开
private JMenuItem item_exit=null;//菜单项--退出
private JMenuItem item_about=null;//菜单项--关于
public MyFrame(String title){
super(title);
init();
registerListener();
}
//初始化相关组件
public void init(){
tv_area=new JTextArea();
s_pane=new JScrollPane(tv_area);
//这里就是一个水平滑动条策略。后面needed表示有必要的时候出现。就是说当写的字数超过容量才会出现水平滑动条。
s_pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
Container cpane = this.getContentPane();
cpane.add(s_pane, BorderLayout.CENTER);
this.setSize(500, 300);
//初始化菜单
mb=new JMenuBar();//菜单栏
m_file=new JMenu("文件");
item_new=new JMenuItem("新建");
item_exit=new JMenuItem("退出");
item_open=new JMenuItem("打开");
m_file.add(item_new);
m_file.add(item_exit);
m_file.add(item_open);
m_help = new JMenu("帮助");
item_about=new JMenuItem("关于");
m_help.add(item_about);
mb.add(m_file);
mb.add(m_help);
//把菜单栏添加到窗体中
this.setJMenuBar(mb);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口的时候退出应用程序
//设置窗口居中显示。
//定义一个工具包,
//(屏幕减去窗体)除以2的位置。
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();//screenSize封装屏幕的宽度高度
int screenWidth=screenSize.width;
int screenHeight = screenSize.height;
int windowWidth = this.getWidth();
int windowHeight = this.getHeight();
this.setLocation((screenWidth-windowWidth)/2,(screenHeight-windowHeight)/2);
this.setVisible(true);
}
private void setLocation(double d, double e) {
// TODO Auto-generated method stub
}
//给相关组件设置事件监听器
public void registerListener(){
item_new.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
newFile();
}
});
item_open.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
openFile();
}
});
//退出功能
item_exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
exit();
}
});
item_about.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new AboutDialog(MyFrame.this, "关于记事本", true);
//这里第三个参数为 是够为模式对话框,模式对话框:不关闭当前窗口无法操作其他的窗口
//非模式对话框 不关闭当前窗口也可操作其他窗口
}
});
}
//新建的功能
private void newFile(){
if(!tv_area.getText().equals("")){
int res=JOptionPane.showConfirmDialog(null, "是否保存?","提示信息",JOptionPane.YES_NO_OPTION);
if(res==JOptionPane.YES_NO_OPTION){
//文件保存对话框
FileDialog fd=new FileDialog(this, "保存文件", FileDialog.SAVE);
fd.setVisible(true);
}else{
tv_area.setText("");//清空记事本
}
}
}
//打开文件
private void openFile(){
FileDialog fd=new FileDialog(this, "打开文件", FileDialog.LOAD);
fd.setVisible(true);
}
//退出
private void exit(){
newFile();
System.exit(0);
}
}
class AboutDialog extends JDialog{
private JLabel desc=null;
private JPanel panel=null;
private JButton btn=null;
public AboutDialog(Frame frame,String title,boolean modal){
super(frame,title,modal);//这里第三个参数为 是否为模式对话框
init();
registerListener();
}
private void init(){
desc = new JLabel();
//settext里面支持html标签
desc.setText("<html>这是一个记事本开发初期,还要<br/>大家多多指教</html>");
desc.setHorizontalAlignment(JLabel.CENTER);
panel=new JPanel();
btn=new JButton("OK");
panel.add(btn);
this.add(desc);//默认放在边界布局管理器的中间
this.add(panel,BorderLayout.SOUTH);
this.setSize(300,200);
}
private void registerListener(){
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
AboutDialog.this.dispose();//退出对话框
}
});
//这里是为了把弹出的对话框放在屏幕中间
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();//screenSize封装屏幕的宽度高度
int screenWidth=screenSize.width;
int screenHeight = screenSize.height;
int dialogWidth = this.getWidth();
int dialogHeight = this.getHeight();
this.setLocation((screenWidth-dialogWidth)/2,(screenHeight-dialogHeight)/2);
this.setVisible(true);
}
}