天天看點

記事本的制作

<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() {


		@Override
		public void actionPerformed(java.awt.event.ActionEvent arg0) {
			// TODO Auto-generated method stub
			JMenuItem 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() {

			@Override
			public void actionPerformed(java.awt.event.ActionEvent arg0) {
				// TODO Auto-generated method stub
				text.copy();
			}
		});
		buttons[1].setToolTipText("剪切");
		buttons[1].addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(java.awt.event.ActionEvent arg0) {
				// TODO Auto-generated method stub
				text.cut();
			}
		});
		buttons[2].setToolTipText("粘貼");
		buttons[2].addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(java.awt.event.ActionEvent arg0) {
				// TODO Auto-generated method stub
				text.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);
	}
}