您的位置:首页 > 移动开发 > 微信开发

Java小程序设计--Note记事本

2013-08-10 15:42 369 查看
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;

public class MyNotePad implements ActionListener {
private JFrame frame = new JFrame("NewNote");
private JTextArea jta = new JTextArea();
private String result = "";

/* File is a new file? */
private boolean flag = true;
private File f;

/* Find or Replease Dialog */
private JButton jb = new JButton("Start");
private JTextField jtf = new JTextField(5);
private JTextField jt = new JTextField(5);
private JButton jbt = new JButton("Replace AS");
private JButton jba = new JButton("Replace All");
private String value;
private int start = 0;
private JFrame jf = new JFrame("Find");
private JFrame jfc = new JFrame("Replace");

@Override
public void actionPerformed(ActionEvent e) {
String comm = e.getActionCommand();
/* If file is new */
if ("New".equals(comm)) {
New();
} else if ("Open".equals(comm)) {
Open();
} else if ("Save".equals(comm)) {
Save();
} else if ("Save As".equals(comm)) {
Save_As();
} else if ("Exit".equals(comm)) {
ExitJudge();
} else if ("Undo".equals(comm)) {
jta.setText(value);
} else if ("Cut".equals(comm)) {
value = jta.getText();
jta.cut();
} else if ("Copy".equals(comm)) {
jta.copy();
} else if ("Paste".equals(comm)) {
value = jta.getText();
jta.paste();
} else if ("Delete".equals(comm)) {
value = jta.getText();
jta.replaceSelection(null);
} else if ("Select all".equals(comm)) {
jta.selectAll();
} else if ("Find".equals(comm)) {
Find();
} else if ("Replace".equals(comm)) {/* menuitem */
Replace();

} else if ("Version".equals(comm)) {
Version();
} else if ("Start".equals(comm) || "Next".equals(comm)) {
StartNextButton();
} else if ("Replace AS".equals(comm)) {/* buttron */
ReplaceAs();
} else if ("Replace All".equals(comm)) {/* buttron */
String temp = jta.getText();
temp = temp.replaceAll(jtf.getText(), jt.getText());
jta.setText(temp);
} else if ("Auto Wrap".equals(comm)) {
if (!jta.getLineWrap())
jta.setLineWrap(true);// 自动换行
else {
jta.setLineWrap(false);
}
}
}

/* ExitJudge */
private void ExitJudge() {
if (flag) {
int returnVal = JOptionPane.showConfirmDialog(null,
"Doesn't save this new file!!\r\nExit??");
if (returnVal == JOptionPane.OK_OPTION)/* select the OK button */
{
Save();
System.exit(0);
} else if (returnVal == JOptionPane.NO_OPTION) {
/* select the NO button */
System.exit(0);
} else {
/* select the cancle button */
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
}
}

/* Replace As */
private void ReplaceAs() {
String temp = jtf.getText();
int s = value.indexOf(temp, start);
if (value.indexOf(temp, start) != -1) {
jta.setSelectionStart(s);
jta.setSelectionEnd(s + temp.length());
jta.setSelectedTextColor(Color.GREEN);
start = s + 1;
jta.replaceSelection(jt.getText());
} else {
JOptionPane.showMessageDialog(jf, "Find Over!", "Tips", 0);
jf.dispose();
}
}

/* StartNextButton */
private void StartNextButton() {
String temp = jtf.getText();
jb.setText("Start");
if (!temp.equals("")) {
int s = value.indexOf(temp, start);
if (value.indexOf(temp, start) != -1) {
jta.setSelectionStart(s);
jta.setSelectionEnd(s + temp.length());
jta.setSelectedTextColor(Color.GREEN);
start = s + 1;
jb.setText("Next");
// value=value.substring(s+temp.length());//不能截取字串
} else {
JOptionPane.showMessageDialog(jf, "Find Over!", "Tips", 0);
/* reset the cursor to index 0 */
jta.setCaretPosition(0);
start = 0;
jf.dispose();
}
} else {
JOptionPane.showMessageDialog(null, "Text is null");
jf.dispose();
}
}

/* start the text_find from */
private void Find() {
value = jta.getText();
if (!value.equals("")) {
jf.add(jtf, BorderLayout.CENTER);
jf.add(jb, BorderLayout.SOUTH);
jf.setLocation(630, 300);
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
} else {
JOptionPane.showMessageDialog(null, "Text is null!!");
}
}

/* Version */
private void Version() {
JDialog jd = new JDialog(frame, "Version");
/* tips */
JLabel label = new JLabel("Designed By ZKJ!!!");
/* tips' font */
label.setFont(new Font("微软雅黑", Font.PLAIN, 25));
/* text center */
label.setHorizontalAlignment(JTextField.CENTER);
jd.add(label, BorderLayout.CENTER);
jd.setLocation(600, 350);
jd.setSize(300, 100);
jd.setVisible(true);
// jd.pack();
/* JDialog.DISPOSE_ON_CLOSE */
jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}

/* start the text_replace from */
/* label */
JLabel jl1 = new JLabel("Content:");
JLabel jl2 = new JLabel("Replace As:");
JLabel jl3 = new JLabel();
JLabel jl4 = new JLabel();

private void Replace() {
value = jta.getText();
jfc.setLayout(new GridLayout(3, 3));
/* add */
jfc.add(jl1);
jfc.add(jtf);
jfc.add(jb);
jfc.add(jl2);
jfc.add(jt);
jfc.add(jbt);
jfc.add(jl3);
jfc.add(jl4);
jfc.add(jba);
jfc.setLocation(570, 300);
jfc.pack();
jfc.setVisible(true);
/* JDialog.DISPOSE_ON_CLOSE */
jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}

/* new */
private void New() {
/* If there exits a file */
if (!(frame.getTitle().equals("NewNote"))) {
/* If this file doesn't save */
if (!flag) {
write();
newNew();
} else {
JFileChooser jfc = new JFileChooser("D:\\javaNote");
int returnVal = jfc.showDialog(null, "Save As");
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = jfc.getSelectedFile();
flag = false;
write();
}
}
} else if (!(jta.getText().isEmpty())) {
JFileChooser jfc = new JFileChooser("D:\\javaNote");
int returnVal = jfc.showDialog(null, "Save");
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = jfc.getSelectedFile();
flag = false;
write();
newNew();
}
} else {
newNew();
}
}

/* open */
private void Open() {
JFileChooser jfc = new JFileChooser("D:\\javaNote");
jfc.setDialogType(JFileChooser.OPEN_DIALOG);
int returnVal = jfc.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = jfc.getSelectedFile();
/* set frame title */
frame.setTitle(f.getName());
result = read();
flag = false;
value = result;
jta.setText(result);
}
}

/* save as */
private void Save_As() {
JFileChooser jfc = new JFileChooser("D:\\javaNote");
int returnVal = jfc.showDialog(null, "Save As");
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = jfc.getSelectedFile();
write();
}
}

/* save */
private void Save() {
JFileChooser jfc = new JFileChooser("D:\\javaNote");
if (flag) {
int returnVal = jfc.showDialog(null, "Save");
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = jfc.getSelectedFile();
flag = false;
write();
}
} else {
write();
}
}

/* read text to programme */
public String read() {
String temp = "";
try {
FileInputStream fis = new FileInputStream(f.getAbsolutePath());
byte[] b = new byte[1024];
int num = fis.read(b);
while (num != -1) {
temp = temp + new String(b, 0, num);
num = fis.read(b);
}
fis.close();
} catch (Exception e1) {
e1.printStackTrace();
}
return temp;
}

/* write text to file */
public void write() {
try {
FileOutputStream fos = new FileOutputStream(f);
fos.write(jta.getText().getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}

/* new file */
public void newNew() {
/* release the old frame */
frame.dispose();
/* new another frame */
new MyNotePad();
/* set flag=true */
flag = true;
}

/* constructor */
public MyNotePad() {
init();
}

/* init the frame */
private void init() {
JMenuBar jmb = addMenuToFrame();
frame.setJMenuBar(jmb);
// jta.setLineWrap(true);// 自动换行
JScrollPane jsp = new JScrollPane(jta);// 滚动窗口面板
frame.add(jsp);

jb.addActionListener(this);
jbt.addActionListener(this);
jba.addActionListener(this);
//		try {
//			UIManager
//					.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//		} catch (Exception e) {
//
//			e.printStackTrace();
//		}
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception e1) {
e1.printStackTrace();
}
/* Key Event */
addKeyEvent();
/* Window Event */
AddWinCloseEvent();
frame.setLocation(550, 200);
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

/* Window Event */
private void AddWinCloseEvent() {
frame.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {
ExitJudge();
}
});
}

/* Add KeyEvent */
private void addKeyEvent() {
/* adapter */
jta.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch (key) {
case KeyEvent.VK_CONTROL | KeyEvent.VK_C:/* Ctrl+C */
jta.copy();
break;
case KeyEvent.VK_CONTROL | KeyEvent.VK_V:/* Ctrl+V */
jta.paste();
break;
case KeyEvent.VK_CONTROL | KeyEvent.VK_A:/* Ctrl+A */
jta.selectAll();
break;
case KeyEvent.VK_DELETE: /* Delete */
value = jta.getText();
jta.replaceSelection(null);
break;
}
/* Ctrl+ _ */
if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_N)
newNew();
else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) {
Save();
} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_O) {
Open();
} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_F) {
Find();
} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_H) {
Replace();
} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_Z) {
jta.setText(value);
}

}
});
}

/* add menubar to frame */
private JMenuBar addMenuToFrame() {
JMenuBar jmb = new JMenuBar();
String[] menuLab = { "File", "Edit", "Font", "Help" };
String[][] menuItemLab = {
{ "New", "Open", "Save", "Save As", "Exit" },
{ "Undo", "Cut", "Copy", "Paste", "Delete", "Select all",
"Find", "Replace" }, { "Auto Wrap" }, { "Version" } };
/* add */
for (int i = 0; i < menuLab.length; i++) {
JMenu menu = new JMenu(menuLab[i]);
jmb.add(menu);
for (int j = 0; j < menuItemLab[i].length; j++) {
JMenuItem jmi = new JMenuItem(menuItemLab[i][j]);
menu.add(jmi);
jmi.addActionListener(this);
}
}
return jmb;
}

/* test */
public static void main(String[] args) {
new MyNotePad();
}
}

 

/*这个记事本的主要难点就在于读写文件,以及各种逻辑的控制,是否保存为保存的,是否退出....等等总之还是比较有意思而且有综合运用File,swing等知识*/下面是运行的几个截图/*见谅一下,注释用了一手不标准的Eng*/







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Swing Note