记事本的制作
2016-04-26 10:57
197 查看
<p> 1 做一个记事本,首先我们要想好它的布局。</p><p>2.选择一些可能用到的图片。</p><p>3.下面看一个完整的记事本代码。</p><div> </div>
package big;import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JColorChooser;import javax.swing.JDialog;import javax.swing.JFileChooser;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.JScrollPane;import javax.swing.JTextPane;import javax.swing.JToolBar;//import com.sun.prism.paint.Color;class TextEditorFrame extends JFrame {File file = null;Color color = Color.RED;// 这是用来做文本框的JTextPane text = new JTextPane();// 文件选择框JFileChooser filechooser = new JFileChooser();JColorChooser coloechooser = new JColorChooser();// 关于对话框JDialog about = new JDialog(this);// 菜单JMenuBar menubar = new JMenuBar();JMenu[] menus = new JMenu[] { new JMenu("文件"), new JMenu("编辑"),new JMenu("帮助") };JMenuItem menuitems[][] = new JMenuItem[][]{{ new JMenuItem("新建"), new JMenuItem("打开"), new JMenuItem("保存"),new JMenuItem("退出") },{ new JMenuItem("复制"), new JMenuItem("剪切"), new JMenuItem("粘贴"),new JMenuItem("颜色") }, { new JMenuItem("关于") }};TextEditorFrame(String title) {initTextPane();initAboutDialog();initToolBar();initMenu();this.setDefaultCloseOperation(this.DO_NOTHING_ON_CLOSE);this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {int n = JOptionPane.showConfirmDialog(null, "确认关闭吗?", "确认关闭框",JOptionPane.YES_NO_OPTION);if (n == JOptionPane.YES_OPTION) {System.out.println(n);System.exit(0);}else if (n == JOptionPane.NO_OPTION) {return;}}});}void initTextPane() {getContentPane().add(new JScrollPane(text));}void initMenu() {for (int i = 0; i < menus.length; i++) {menubar.add(menus[i]);for (int j = 0; j < menuitems[i].length; j++) {menus[i].add(menuitems[i][j]);menuitems[i][j].addActionListener(action);}}this.setJMenuBar(menubar);}ActionListener action = new ActionListener() {@Overridepublic void actionPerformed(java.awt.event.ActionEvent arg0) {// TODO Auto-generated method stubJMenuItem mi = (JMenuItem) arg0.getSource();String id = mi.getText();if(id.equals("新建")){text.setText("");file=null;}else if (id.equals("打开")) {if (file != null)filechooser.setSelectedFile(file);int returnVal = filechooser.showOpenDialog(TextEditorFrame.this);if (returnVal == JFileChooser.APPROVE_OPTION) {file = filechooser.getSelectedFile();openFile();}} else if (id.equals("保存")) {if (file != null)filechooser.setSelectedFile(file);int returnVal = filechooser.showSaveDialog(TextEditorFrame.this);if (returnVal == JFileChooser.APPROVE_OPTION) {file = filechooser.getSelectedFile();saveFile();}} else if (id.equals("退出")) {int n = JOptionPane.showConfirmDialog(null, "确认关闭吗?", "确认关闭框",JOptionPane.YES_NO_OPTION);if (n == JOptionPane.YES_OPTION) {System.exit(0);} else if (n == JOptionPane.NO_OPTION) {return;}} else if (id.equals("剪切")) {text.cut();} else if (id.equals("复制")) {text.copy();} else if (id.equals("粘贴")) {text.paste();} else if (id.equals("color")) {color = JColorChooser.showDialog(TextEditorFrame.this, "",color);text.setForeground(color);} else if (id.equals("关于")) {about.setSize(200, 150);}}};void saveFile() {try {FileWriter fw = new FileWriter(file);fw.write(text.getText());fw.close();} catch (Exception e) {e.printStackTrace();}}void openFile() {try {FileReader fr = new FileReader(file);int len = (int) file.length();char[] buffer = new char[len];fr.read(buffer, 0, len);fr.close();text.setText(new String(buffer));} catch (Exception e) {e.printStackTrace();}}void initAboutDialog() {about.getContentPane().add(new JLabel("传到Java,你进步了吗?"));about.setModal(true);about.setSize(200, 100);}// 我来加上工具条JToolBar toolbar = new JToolBar();JButton[] buttons = new JButton[] {new JButton("", new ImageIcon("qin.jpg")),new JButton("", new ImageIcon("shu.jpg")),new JButton("", new ImageIcon("xin.jpg")) };void initToolBar() {for (int i = 0; i < buttons.length; i++)toolbar.add(buttons[i]);buttons[0].setToolTipText("复制");buttons[0].addActionListener(new ActionListener() {@Overridepublic void actionPerformed(java.awt.event.ActionEvent arg0) {// TODO Auto-generated method stubtext.copy();}});buttons[1].setToolTipText("剪切");buttons[1].addActionListener(new ActionListener() {@Overridepublic void actionPerformed(java.awt.event.ActionEvent arg0) {// TODO Auto-generated method stubtext.cut();}});buttons[2].setToolTipText("粘贴");buttons[2].addActionListener(new ActionListener() {@Overridepublic void actionPerformed(java.awt.event.ActionEvent arg0) {// TODO Auto-generated method stubtext.paste();}});this.getContentPane().add(toolbar, BorderLayout.NORTH);}}public class F {public static void main(String[] args) {TextEditorFrame f = new TextEditorFrame("NoteBook");f.setTitle("hzy记事本");f.setSize(800, 600);f.setVisible(true);}}
相关文章推荐
- logdump
- SQL Server 海量数据查询代码优化以及建议
- 将ResultSet转换成List<HashMap<String,String>>
- git 本地临时分支命名
- RxJava----线程控制
- IOS应用架构思考一(网络层)
- apache编译安装
- OS X开发 --- 10.8之前系统 NSColor 转 CGColorRef
- UML 需求建模基础与实例
- RobotFramework 入门
- Android的视频通话的Java代码
- (礼拜一log)前端开发:children和find函数;position属性
- hadoop namenode启动不了解决方案
- iOS可执行文件瘦身方法
- HTTP/2 协议用于 iOS 推送提醒服务 (APNS)
- win7系统安装虚拟机win10提示"传输VMDB错误-44:Message”的解决方法
- java利用url写个抓取服务器文件
- 解决同域Nginx ajax 请求跨域的问题
- iOS最佳实践
- npm包管理工具常用命令