分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

文件列圖:

AppJSB

package jsb;
 
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
 
/**
 * <p>Title: 流星絮语记事本</p>
 *
 * <p>Description: 记事本</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: 西昌学院</p>
 *
 * @author 冯立彬
 * @version 1.0
 */
public class AppJSB {
    boolean packFrame = false;
 
    /**
     * Construct and show the application.
     */
    public AppJSB() {
        FrameJSB frame = new FrameJSB();
        frame.setSize(420,360);
        frame.setResizable(false);
        // Validate frames that have preset sizes
        // Pack frames that have useful preferred size info, e.g. from their layout
        if (packFrame) {
            frame.pack();
        } else {
            frame.validate();
        }
 
        // Center the window
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
    }
 
    /**
     * Application entry point.
     *
     * @param args String[]
     */
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.
                                             getSystemLookAndFeelClassName());
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
 
                new AppJSB();
            }
        });
    }
}

FrameJSB.java

package jsb;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JToolBar;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.datatransfer.*;
import java.io.*;

/**
 * <p>Title: 流星絮语记事本</p>
 *
 * <p>Description: 记事本</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: 西昌学院</p>
 *
 * @author 冯立彬
 * @version 1.0
 */
public class FrameJSB extends JFrame{
    JPanel contentPane;
    JMenuBar jMenuBar1 = new JMenuBar(); //生成菜单栏母体
    JMenu jMenuFile = new JMenu(); //生成第一个菜单(File)
    JMenuItem jMenuFileCreat = new JMenuItem();
    JMenuItem jMenuFileSave = new JMenuItem();
    JMenuItem jMenuFileOpen = new JMenuItem();
    JMenuItem jMenuFileSaveAs = new JMenuItem();
    JMenuItem jMenuFileExit = new JMenuItem();
    JMenu jMenuEdit = new JMenu(); //生成第二个菜单(Edit)
    JMenuItem jMenuEditReDo = new JMenuItem();
    JMenuItem jMenuEditCut = new JMenuItem();
    JMenuItem jMenuEditCopy = new JMenuItem();
    JMenuItem jMenuEditPaste = new JMenuItem();
    JMenuItem jMenuEditDel = new JMenuItem();
    JMenuItem jMenuEditSelectAll = new JMenuItem();
    JMenu jMenuFormat = new JMenu(); //生成第三个菜单(format)
    JMenuItem jMenuFormatColor = new JMenuItem();
    JMenu jMenuHelp = new JMenu(); //生成第四个菜单(about)
    JMenuItem jMenuHelpDocument = new JMenuItem();
    JMenuItem jMenuHelpAbout = new JMenuItem();
    JToolBar jToolBar = new JToolBar();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JButton jButton3 = new JButton();
    ImageIcon image1 = new ImageIcon(jsb.FrameJSB.class.getResource(
            "openFile.png"));
    ImageIcon image2 = new ImageIcon(jsb.FrameJSB.class.getResource(
            "closeFile.png"));
    ImageIcon image3 = new ImageIcon(jsb.FrameJSB.class.getResource("help.png"));
    JLabel statusBar = new JLabel();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea jTxtArea = new JTextArea();
    JMenuItem jMenuEditAutoWrap = new JMenuItem();
    //生成打开文件对话框
    //Frame_FileDialog fdilog=new Frame()
    //JMenuItem jMenuFileOpen = new JMenuItem();
    FileDialog fd;
    String File_Name_withPath = ""; //全局变量名,文件名
    String File_Name = ""; //全局变量名,文件名
    boolean textIsChanged = false;
    boolean textIsSaved=false;
    FileReader fr; //文件读取器
    FileWriter fw; //文件写入器
    BufferedReader br; //文件缓冲读取器
    BufferedWriter bw; //文件缓冲写入器
    Clipboard clipBoard;
    StringSelection text; //用于存放获得的字符
    public FrameJSB() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
            //getToolkit()获得一个Toolkit对象,该对象再调用getSystemClipboard()方法
            //获得系统的剪贴板
            clipBoard = getToolkit().getSystemClipboard();
            //为文本框增加键盘监听事件
            //addKeyListener(this);
            //jTxtArea.addKeyListener(KeyPressed);
            //addKeyListener(jTxtArea);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

/**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        setSize(new Dimension(400, 300));
        setTitle("记事本");
        statusBar.setText("程序开始");
        statusBar.setBounds(new Rectangle(0, 284, 400, 17));
        jMenuFile.setText("文件");
        jMenuFileCreat.setText("新建");
        jMenuFileCreat.addActionListener(new
                                         FrameJSB_jMenuFileCreat_ActionAdapter(this));
        jMenuFileOpen.setText("打开..");
        jMenuFileOpen.addActionListener(new
                                        FrameJSB_jMenuFileOpen_ActionAdapter(this));
        jMenuFileSave.setText("保存");
        jMenuFileSave.addActionListener(new
                                        FrameJSB_jMenuFileSave_ActionAdapter(this));
        //jMenuFileSave.setEnabled(false);
        jMenuFileSaveAs.setText("另存为..");
        jMenuFileSaveAs.addActionListener(new
                                          FrameJSB_jMenuFileSaveAs_ActionAdapter(this));
        //jMenuFileSaveAs.setEnabled(false);
        jMenuFileExit.setText("Exit");
        jMenuFileExit.addActionListener(new
                                        FrameJSB_jMenuFileExit_ActionAdapter(this));
        jMenuEdit.setText("编辑");

jMenuEditReDo.setText("撤消");
        jMenuEditCut.setText("剪切");
        jMenuEditCut.addActionListener(new
                                       FrameJSB_jMenuEditCut_ActionAdapter(this));
        jMenuEditCopy.setText("拷贝");
        jMenuEditCopy.addActionListener(new
                                        FrameJSB_jMenuEditCopy_ActionAdapter(this));
        jMenuEditPaste.setText("粘贴");
        jMenuEditPaste.addActionListener(new
                                         FrameJSB_jMenuEditPaste_ActionAdapter(this));
        jMenuEditDel.setText("删除");
        jMenuEditDel.addActionListener(new
                                       FrameJSB_jMenuEditDel_ActionAdapter(this));
        jMenuEditSelectAll.setText("全选");
        jMenuEditSelectAll.addActionListener(new
                                             FrameJSB_jMenuEditSelectAll_ActionAdapter(this));
        jMenuEditAutoWrap.setText("自动换行");
        jMenuEditAutoWrap.addActionListener(new
                                            FrameJSB_jMenuEditAutoWrap_ActionAdapter(this));
        jMenuFormat.setText("格式");
        jMenuFormatColor.setText("字体..");
        jMenuFormatColor.addActionListener(new
                                           FrameJSB_jMenuFormatColor_ActionAdapter(this));
        jMenuHelp.setText("帮助");
        jMenuHelpDocument.setText("帮助文档");
        jMenuHelpDocument.addActionListener(new
                                            FrameJSB_jMenuHelpDocument_ActionAdapter(this));
        jMenuHelpAbout.setText("关于软件");
        jMenuHelpAbout.addActionListener(new
                                         FrameJSB_jMenuHelpAbout_ActionAdapter(this));
        jToolBar.setBounds(new Rectangle(0, 0, 400, 25));
        jScrollPane1.setBounds(new Rectangle(4, 27, 396, 260));
        jTxtArea.setText("");
        jTxtArea.setLineWrap(true);

jMenuBar1.add(jMenuFile);
        jMenuFile.add(jMenuFileCreat);
        jMenuFile.add(jMenuFileOpen);
        jMenuFile.add(jMenuFileSave);
        jMenuFile.add(jMenuFileSaveAs);
        jMenuFile.addSeparator();
        jMenuFile.add(jMenuFileExit);

jMenuBar1.add(jMenuEdit);
        jMenuEdit.add(jMenuEditReDo);
        jMenuEdit.addSeparator();
        jMenuEdit.add(jMenuEditCopy);
        jMenuEdit.add(jMenuEditCut);
        jMenuEdit.add(jMenuEditPaste);
        jMenuEdit.add(jMenuEditDel);
        jMenuEdit.addSeparator();
        jMenuEdit.add(jMenuEditSelectAll);
        jMenuEdit.add(jMenuEditAutoWrap);
        jMenuBar1.add(jMenuHelp);
        jMenuHelp.add(jMenuHelpDocument);
        jMenuHelp.add(jMenuHelpAbout);
        setJMenuBar(jMenuBar1);
        jButton1.setIcon(image1);
        jButton1.setToolTipText("Open File");
        jButton2.setIcon(image2);
        jButton2.setToolTipText("Close File");
        jButton3.setIcon(image3);
        jButton3.setToolTipText("Help");
        jToolBar.add(jButton1);
        jToolBar.add(jButton2);
        jToolBar.add(jButton3);
        contentPane.add(jToolBar, null);
        contentPane.add(statusBar, null);
        contentPane.add(jScrollPane1);
        jScrollPane1.getViewport().add(jTxtArea);
    }

//下面是键盘事件
    //KeyEvent类提供了一个方法:public void getKeyCode()用于判断哪个键被按下或释放
    //键盘按下
    public void keyPressed(KeyEvent e) {
        textIsChanged = true;
    }

//释放按键

public void keyRelease(KeyEvent e) {
        textIsChanged = true;
    }

//
    public void keyTyped(KeyEvent e) {
        textIsChanged = true;
    }
    /**
     * File | Exit action performed.
     *
     * @param actionEvent ActionEvent
     */
    void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
        System.exit(0);
    }

/**
     * Help | About action performed.
     *
     * @param actionEvent ActionEvent
     */
    void jMenuHelpAbout_actionPerformed(ActionEvent actionEvent) {
        FrameJSB_AboutBox dlg = new FrameJSB_AboutBox(this);
        Dimension dlgSize = dlg.getPreferredSize();
        Dimension frmSize = getSize();
        Point loc = getLocation();
        dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
                        (frmSize.height - dlgSize.height) / 2 + loc.y);
        dlg.setModal(true);
        dlg.pack();
        dlg.show();

}

//新建文件
    void jMenuFileCreat_actionPerformed(ActionEvent actionEvent) {

}

//打开文件
    void jMenuFileOpen_actionPerformed(ActionEvent actionEvent) {
        try {
            if(textIsChanged==true){//如果文本已经发生了更改,提示保存
                //这里应该提示用户是否保存
                jMenuFileSaveAs_actionPerformed(actionEvent);//调开另存为话框
            }
            else{
                fd = new FileDialog(this, "文件打开对话框", FileDialog.LOAD);
                fd.setVisible(true);
                //怎么确定没有选定文件,而不进行下面的操作
                //File_Name = fd.getFile().toString();
                File_Name = fd.getFile();
                File_Name_withPath = fd.getDirectory();
                //File_Name_withPath = fd.getDirectory().toString() + File_Name;
                if (File_Name.length() > 0) {
                    jTxtArea.setText("");
                }
                this.setTitle(File_Name); //将文件名设为标题
                //生成一个对应于该文件的文件对象
                File file = new File(fd.getDirectory(), fd.getFile());
                fr = new FileReader(file);
                br = new BufferedReader(fr);
                String tString; //临时字符串变量
                int num = 0;
                //加上换行符,在输出的时候才会格式不变化
                String lineSep = System.getProperty("line.separator");
                while ((tString = br.readLine()) != null) {
                    tString = tString + lineSep;
                    jTxtArea.append(tString);
                }
                br.close();
                fr.close();
                fd.dispose();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//保存文件
    void jMenuFileSave_actionPerformed(ActionEvent actionEvent) {
        try {
            if (textIsSaved == false) {
                jMenuFileSaveAs_actionPerformed(actionEvent);
            } else {
                fd = new FileDialog(this, "文件保存对话框", FileDialog.SAVE);
                //fd.setVisible(true);//因为是保存所有不用显示出来
                //fd.set
                //if(File_Name.length()>0)//如果是已经打开的文件就把文件名显示出来
                //fd.setFile(File_Name);
                //fd.setFilenameFilter(txt);
                File file = new File(File_Name_withPath, File_Name);
                fw = new FileWriter(file);
                bw = new BufferedWriter(fw);
                //String lineString;
                //lineString=jTxtArea.getText();
                //lineString=lineString.replace("/n");
                bw.write(jTxtArea.getText(), 0, jTxtArea.getText().length());
                this.setTitle(fd.getFile());
                bw.close();
                fw.close();
                fd.dispose();
                textIsSaved=true;
                textIsChanged=false;
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }

}

void jMenuFileSaveAs_actionPerformed(ActionEvent actionEvent) {
        try {
            //这里还有错误,就是如果文件不是打开而是新建的点击这里会出错
            //因为只是一下就保存了,假设已经取得原来的文件名和路径
            fd = new FileDialog(this, "文件另存为对话框", FileDialog.SAVE);
            fd.setVisible(true);
            //fd.set
            //if(File_Name.length()>0)//如果是已经打开的文件就把文件名显示出来
            //fd.setFile(File_Name);
            //fd.setFilenameFilter(txt);
            File file = new File(fd.getDirectory(), fd.getFile());
            fw = new FileWriter(file);
            bw = new BufferedWriter(fw);
            //String lineString;
            //lineString=jTxtArea.getText();
            //lineString=lineString.replace("/n");
            bw.write(jTxtArea.getText(), 0, jTxtArea.getText().length());
            this.setTitle(fd.getFile());
            bw.close();
            fw.close();
            fd.dispose();
            textIsSaved=true;
            textIsChanged=false;
        } catch (IOException ex) {
            ex.printStackTrace();
        }

}

//数据的拷贝,送入剪贴板
    void copySelectedData() {
        String S;
        S = jTxtArea.getSelectedText();
        text = new StringSelection(S); //将选中的文本放入text全局变量中
        clipBoard.setContents(text, null);
    }

//数据的拷贝
    void jMenuEditCopy_actionPerformed(ActionEvent actionEvent) {
        copySelectedData();
    }

//数据的粘贴
    void jMenuEditPaste_actionPerformed(ActionEvent actionEvent) {
        Transferable contents = clipBoard.getContents(new Button());
        DataFlavor flavor = DataFlavor.stringFlavor;
        contents.isDataFlavorSupported(flavor);
        try {
            //取得剪贴板中的内容
            String tText = (String) contents.getTransferData(flavor);
            //用替换选中文字的方式来粘贴,如果没有选中文件,那么选择的开始和结束都是一样的
            //取得选中点前面的文字和后面的文字,再将从剪贴板取得的文字三都结合起来就起到了剪
            //贴的目的
            int selStart, selEnd;
            selStart = jTxtArea.getSelectionStart();
            selEnd = jTxtArea.getSelectionEnd();
            if (selStart == selEnd) {
                //采用insert方法可以文本可以自动获得光标,而不用手工去获得光标
                jTxtArea.insert(tText, selStart);
            } else {

String allText, beforeText, afterText;
                allText = jTxtArea.getText();
                beforeText = allText.substring(0, selStart);
                afterText = allText.substring(selEnd, allText.length());
                allText = beforeText + tText + afterText;
                jTxtArea.setText(allText);
                //失去光标,手工获得光标,但是这时的光标位置是在文本尾
                jTxtArea.setFocusable(true);
                //jTxtArea.insert(tText,selStart);
            }

} catch (Exception e) {
            e.printStackTrace();
        }
    }

//全选
    void jMenuEditSelectAll_actionPerformed(ActionEvent actionEvent) {
        jTxtArea.selectAll();
    }

//删除选中
    void jMenuEditDel_actionPerformed(ActionEvent actionEvent) {
        int selStart, selEnd;
        selStart = jTxtArea.getSelectionStart();
        selEnd = jTxtArea.getSelectionEnd();
        String allText, beforeText, afterText;
        allText = jTxtArea.getText();
        beforeText = allText.substring(0, selStart);
        afterText = allText.substring(selEnd, allText.length());
        allText = beforeText + afterText;
        jTxtArea.setText(allText);
        //失去光标,手工获得光标,但是这时的光标位置是在文本尾
        jTxtArea.setFocusable(true);

}

void jMenuEditCut_actionPerformed(ActionEvent actionEvent) {
        int selStart, selEnd;
        String beforeText, afterText, allText, selText;
        //取得选中的文字
        selText = jTxtArea.getSelectedText();
        allText = jTxtArea.getText();
        //取得选中文字的开始点
        selStart = jTxtArea.getSelectionStart();
        //取得选中文字的结束点
        selEnd = jTxtArea.getSelectionEnd();
        //取得选中文字前面的文字
        beforeText = allText.substring(0, selStart);
        //取得选中文字后面的文字
        afterText = allText.substring(selEnd, allText.length());

text = new StringSelection(selText); //将选中的文本放入text全局变量中
        clipBoard.setContents(text, null);

allText = beforeText + afterText;
        jTxtArea.setText(allText);
    }

//自动换行
    void jMenuEditAutoWrap_actionPerformed(ActionEvent actionEvent) {
        if (jTxtArea.getLineWrap()) {
            jTxtArea.setLineWrap(false);
        } else {
            jTxtArea.setLineWrap(true);
        }
    }

//格式化文本的字体
    void jMenuFormatColor_actionPerformed(ActionEvent actionEvent) {
        //FontDialog fd1=new FontD
    }

//调用帮助文档
    void jMenuHelpDocument_actionPerformed(ActionEvent actionEvent) {
        Runtime ec = Runtime.getRuntime();
        try {
            ec.exec("notepad.chm");
        } catch (IOException ex) {
        }
    }
}

class FrameJSB_jMenuFileExit_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuFileExit_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileExit_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuHelpAbout_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuHelpAbout_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuHelpAbout_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuFileCreat_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuFileCreat_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileCreat_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuFileOpen_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuFileOpen_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileOpen_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuFileSave_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuFileSave_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileSave_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuFileSaveAs_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuFileSaveAs_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileSaveAs_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuEditCopy_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuEditCopy_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuEditCopy_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuEditPaste_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuEditPaste_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuEditPaste_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuEditSelectAll_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuEditSelectAll_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuEditSelectAll_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuEditDel_ActionAdapter implements ActionListener {
    FrameJSB adaptee;
    FrameJSB_jMenuEditDel_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuEditDel_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuEditCut_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuEditCut_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuEditCut_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuEditAutoWrap_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuEditAutoWrap_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuEditAutoWrap_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuFormatColor_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuFormatColor_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFormatColor_actionPerformed(actionEvent);
    }
}

class FrameJSB_jMenuHelpDocument_ActionAdapter implements ActionListener {
    FrameJSB adaptee;

FrameJSB_jMenuHelpDocument_ActionAdapter(FrameJSB adaptee) {
        this.adaptee = adaptee;
    }

public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuHelpDocument_actionPerformed(actionEvent);
    }
}
FrameJSB_AboutBox.java

package jsb;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

/**
 * <p>Title: 流星絮语记事本</p>
 *
 * <p>Description: 记事本</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: 西昌学院</p>
 *
 * @author 冯立彬
 * @version 1.0
 */
public class FrameJSB_AboutBox extends JDialog implements ActionListener {
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel insetsPanel1 = new JPanel();
    JPanel insetsPanel2 = new JPanel();
    JPanel insetsPanel3 = new JPanel();
    JButton button1 = new JButton();
    JLabel imageLabel = new JLabel();
    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    JLabel label3 = new JLabel();
    JLabel label4 = new JLabel();
    ImageIcon image1 = new ImageIcon();
    BorderLayout borderLayout1 = new BorderLayout();
    BorderLayout borderLayout2 = new BorderLayout();
    FlowLayout flowLayout1 = new FlowLayout();
    GridLayout gridLayout1 = new GridLayout();
    String product = "流星絮语记事本";
    String version = "1.0";
    String copyright = "Copyright (c) 2005";
    String comments = "记事本";

public FrameJSB_AboutBox(Frame parent) {
        super(parent);
        try {
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

public FrameJSB_AboutBox() {
        this(null);
    }

/**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        image1 = new ImageIcon(jsb.FrameJSB.class.getResource("about.png"));
        imageLabel.setIcon(image1);
        setTitle("关于记事本");
        panel1.setLayout(borderLayout1);
        panel2.setLayout(borderLayout2);
        insetsPanel1.setLayout(flowLayout1);
        insetsPanel2.setLayout(flowLayout1);
        insetsPanel2.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        gridLayout1.setRows(4);
        gridLayout1.setColumns(1);
        label1.setText(product);
        label2.setText(version);
        label3.setText(copyright);
        label4.setText(comments);
        insetsPanel3.setLayout(gridLayout1);
        insetsPanel3.setBorder(BorderFactory.createEmptyBorder(10, 60, 10, 10));
        button1.setText("OK");
        button1.addActionListener(this);
        insetsPanel2.add(imageLabel, null);
        panel2.add(insetsPanel2, BorderLayout.WEST);
        getContentPane().add(panel1, null);
        insetsPanel3.add(label1, null);
        insetsPanel3.add(label2, null);
        insetsPanel3.add(label3, null);
        insetsPanel3.add(label4, null);
        panel2.add(insetsPanel3, BorderLayout.CENTER);
        insetsPanel1.add(button1, null);
        panel1.add(insetsPanel1, BorderLayout.SOUTH);
        panel1.add(panel2, BorderLayout.NORTH);
        setResizable(true);
    }

/**
     * Close the dialog on a button event.
     *
     * @param actionEvent ActionEvent
     */
    public void actionPerformed(ActionEvent actionEvent) {
        if (actionEvent.getSource() == button1) {
            dispose();
        }
    }
}

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:

带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block var foo = 'bar'; 

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ(z)=∫0∞tz−1e−tdt&ThinSpace;.\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

ganttdateFormat  YYYY-MM-DDtitle Adding GANTT diagram functionality to mermaidsection 现有任务已完成               :done,    des1, 2014-01-06,2014-01-08进行中               :active,  des2, 2014-01-09, 3d计划一               :         des3, after des2, 5d计划二               :         des4, after des3, 5d
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

我寫的JAVA記事本源程序相关推荐

  1. [日文]中国語のコンピュータ用語を紹介する記事

    はじめに この記事はアドベントカレンダー の12月5日の記事です. 中国語を勉強したことがない人向けに中国語のコンピュータ用語を紹介していきます.中国語は.面白い・実用的・覚えやすい.と一石三鳥なので ...

  2. 利用Java编写手机应用程序PalmOS基础篇

    作者:王森 相信大家一定會發現,最近到處都是嵌入式系統(embedded system)的新聞.而目前也已經有不少國內外廠商推出各式各樣的PDA(Personal Digital Assistant, ...

  3. java 程序增加 防盗_防盗Java EE –保护Java EE企业应用程序的安全

    java 程序增加 防盗 Øredev离我们仅有几天的路程,我受邀作了两次演讲. 其中之一是关于我最喜欢的主题:安全性和Java EE. 它旨在实现两个目标. 一方面向典型的Java EE开发人员介绍 ...

  4. java ee的小程序_Java EE 8 –为更多设备提供更多应用程序

    java ee的小程序 如果我不喜欢夏天的一件事,那就是事实是没有太多要分享或谈论的新闻. 谁决定将Java Day Tokyo置于今年的这个无聊的时间里,做得很好,并给了我一个写关于新的和即将到来的 ...

  5. 防盗Java EE –保护您的Java EE企业应用程序

    Øredev离我们仅有几天的路程,我受邀作了两次演讲. 其中之一是关于我最喜欢的主题:安全性和Java EE. 它旨在实现两个目标. 一方面向典型的Java EE开发人员介绍整个应用程序安全过程和主要 ...

  6. Java 哪些事最困扰你?

    相信在学Java编程的小伙伴都会遇到很多的问题,特别是当我们写完程序的时候突然报个错,然后找了半天,却没发现哪里报错了,"我在哪","我在干什么"," ...

  7. 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档)

    计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档) 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  8. 计算机毕业设计Java课堂管理系统小程序用户端(源码+mysql数据库+系统+lw文档)

    计算机毕业设计Java课堂管理系统小程序用户端(源码+mysql数据库+系统+lw文档) 计算机毕业设计Java课堂管理系统小程序用户端(源码+mysql数据库+系统+lw文档) 本源码技术栈: 项目 ...

  9. 计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw 本源 ...

最新文章

  1. 一处 ADO.NET Entity Framework 的逻辑BUG
  2. 软件需求工程与UML建模——第九组原型系统总结
  3. Python剑指offer:和为s的连续整数序列
  4. HashMap底层实现原理,红黑树,B+树,B树的结构原理,volatile关键字,CAS(比较与交换)实现原理
  5. 跟公务员稍稍的接触了下
  6. git 创建webpack项目_Webpack入门:从安装到配置
  7. C++ 内建函数对象
  8. sparksql一些指标
  9. python获取局域网通过guest开放的软件_python构建SSH僵尸网络
  10. Battery Charging Specification 1.2 中文详解 来源:www.chengxuyuans.com
  11. 第一次做socket的一些心得
  12. 函数的基本知识点总结(附实例)
  13. .net中哈希表的使用 Hashtable
  14. PDPS教程之工艺仿真必备软件
  15. 私教课程 Day2 2017-09-14
  16. embedding lookup函数
  17. Qt中QOpengl的QMatrix4x4矩阵作用原理以及使用方法
  18. 5G通信下FBMC-OQAM的误码率仿真
  19. 从进程中获取QQ号码
  20. 徐敏 计算机科学教育,计算机学院举办梦想公开课暨2019年暑期社会实践动员大会...

热门文章

  1. 云图说|不要小看不起眼的日志,“小日志,大作用”
  2. 【华为云技术分享】避坑指南:关于SPDK问题分析过程
  3. SpringBoot和缓存
  4. 不改变分辨率转换PDF为png图片的方法汇总
  5. (组合数学笔记)递推关系小结及典型题分析
  6. 【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
  7. 计算机图形学E4——OpenGL 区域种子填充
  8. latex中正文前出现一页空白页,且占正文页数
  9. centos7.0查看IP
  10. Spark Streaming和Flume集成指南V1.4.1