因为还没有学到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{//多行文本框JTextAreaprivate 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() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubnewFile();}});item_open.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubopenFile();}});//退出功能item_exit.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubexit();}});item_about.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubnew 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() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubAboutDialog.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);} }