?? jnotepad.java
字號:
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*; //此類實現一種使用剪切/復制/粘貼操作傳輸數據的機制。
import java.io.*; //實現輸入輸出
import java.util.*; //獲取當前時間
import javax.swing.*; //界面
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class JNotepad extends JFrame {
JTextArea JTAobj;
JFrame JFobj;
static JNotepad JF = new JNotepad();
JTextArea jta = new JTextArea("", 24, 40); //聲明文本
JScrollPane jsp = new JScrollPane(jta); //聲明帶滾動條的面板
JMenuBar jmb = new JMenuBar(); //聲明菜單
JMenu file = new JMenu("文件"); //聲明菜單項
JMenu edit = new JMenu("編輯");
JMenuItem jmi; //聲明菜單
Clipboard clipbd = getToolkit().getSystemClipboard();
//此類實現一種使用剪切/復制/粘貼操作傳輸數據的機制。
String text = "";
JMenu color;
JRadioButtonMenuItem bianji;
JMenu BJCD;
final JPopupMenu jpm = new JPopupMenu();
public static JNotepad newJNotepad() {
return JF;
}
private JNotepad() {
this.setTitle("編輯器"); //設置標題
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設置默認的關閉
this.setLocation(200, 200);
file.add(jmi = new JMenuItem("新建"));
jmi.addActionListener(new newL());
file.add(jmi = new JMenuItem("打開"));
jmi.addActionListener(new openL());
file.add(jmi = new JMenuItem("保存"));
jmi.addActionListener(new saveL());
file.add(jmi = new JMenuItem("關閉"));
jmi.addActionListener(new exitL());
edit.add(jmi = new JMenuItem("字體"));
jmi.addActionListener(new font());
edit.add(color = new JMenu("顏色選擇"));
color.add(jmi = new JMenuItem("字體顏色選擇"));
jmi.addActionListener(new ziticolor());
color.add(jmi = new JMenuItem("背景顏色選擇"));
jmi.addActionListener(new beijingcolor());
edit.add(jmi = new JMenuItem("日期/時間"));
jmi.addActionListener(new time());
edit.add(jmi = new JMenuItem("國家"));
jmi.addActionListener(new guojia());
edit.add(jmi = new JMenuItem("操作列表"));
jmi.addActionListener(new caozuo());
edit.add(BJCD = new JMenu("可編輯"));
ButtonGroup BJ = new ButtonGroup();
BJCD.add(bianji = new JRadioButtonMenuItem("可編輯", true));
bianji.addActionListener(new bianji2());
BJ.add(bianji);
BJCD.add(bianji = new JRadioButtonMenuItem("鎖定"));
bianji.addActionListener(new bianji());
BJ.add(bianji);
jmb.add(file);
jmb.add(edit);
jpm.add(jmi = new JMenuItem("復制"));
jmi.addActionListener(new copyL());
jpm.add(jmi = new JMenuItem("剪切"));
jmi.addActionListener(new cutL());
jpm.add(jmi = new JMenuItem("粘貼"));
jmi.addActionListener(new pasteL());
jpm.add(jmi = new JMenuItem("清除"));
jmi.addActionListener(new deleteL());
jpm.add(jmi = new JMenuItem("全選"));
jmi.addActionListener(new selectAllL());
jta.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3)
jpm.show(JF, e.getX() + 10, e.getY() + 60);
}
});
this.add(jsp);
this.setJMenuBar(jmb);
}
//保存方法
void mm() {
JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(JNotepad.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
String savefile = fc.getSelectedFile().getPath();
if (savefile == null) {
return;
} else {
String docToSave = jta.getText();
if (docToSave != null) {
File fiobj = new File(savefile);
File Fioobj = new File(fiobj.getAbsolutePath());
try {
FileWriter FOutObj = new FileWriter(Fioobj);
BufferedWriter writer = new BufferedWriter(FOutObj);
writer.write(jta.getText());
writer.flush();
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
} else {
return;
}
}
//打開方法
void open() {
JFileChooser fc = new JFileChooser();
int returnVal = fc.showDialog(JNotepad.this, "打開"); //彈出自定義打開菜單
if (returnVal == JFileChooser.APPROVE_OPTION) {
String file = fc.getSelectedFile().getPath();
if (file == null) {
return;
}
try {
File fiobj = new File(file);
FileReader FReadObj = null;
BufferedReader BReadObj = null;
jta.setText("");
try {
FReadObj = new FileReader(fiobj);
BReadObj = new BufferedReader(FReadObj);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} while (true) {
try {
String strmm = BReadObj.readLine();
if (strmm != null) {
strmm = strmm + "\r\n";
jta.setText(jta.getText() + strmm);
} else {
break;
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
BReadObj.close();
FReadObj.close();
} catch (IOException io) {
System.err.println("IOException: " + io.getMessage());
}
} else {
return;
}
}
// 對上面的按鍵進行監聽以及處理
class newL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str12 = jta.getText();
if (str12.equals(null) || str12.equals("")) {
jta.setText("");
} else {
int a = JOptionPane.showConfirmDialog(JF, "請先保存當前文件");
if (a == JOptionPane.YES_OPTION) {
mm();
jta.setText("");
} else if (a == JOptionPane.NO_OPTION) {
jta.setText("");
} else {
}
}
}
}
class openL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str12 = jta.getText();
if (str12.equals(null) || str12.equals("")) {
jta.setText("");
open();
} else {
int a = JOptionPane.showConfirmDialog(JF, "請先保存當前文件");
if (a == JOptionPane.YES_OPTION) {
mm();
JOptionPane.showMessageDialog(JF, "您現在可以打開您需要的文件了");
open();
} else if (a == JOptionPane.NO_OPTION) {
jta.setText("");
open();
} else {
}
}
}
}
class saveL implements ActionListener {
public void actionPerformed(ActionEvent e) {
mm();
}
}
class exitL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str12 = jta.getText();
if (str12.equals(null) || str12.equals("")) {
jta.setText("");
System.exit(0);
} else {
int a = JOptionPane.showConfirmDialog(JF, "請先保存當前文件");
if (a == JOptionPane.YES_OPTION) {
mm();
System.exit(0);
} else if (a == JOptionPane.NO_OPTION) {
jta.setText("");
System.exit(0);
} else {
}
}
}
}
class copyL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = jta.getSelectedText();
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
}
}
class cutL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = jta.getSelectedText();
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
jta.replaceRange("", jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
class pasteL implements ActionListener {
public void actionPerformed(ActionEvent e) {
Transferable clipData = clipbd.getContents(JNotepad.this);
try {
String clipString =
(String) clipData.getTransferData(
DataFlavor.stringFlavor);
jta.replaceRange(clipString,
jta.getSelectionStart(),
jta.getSelectionEnd());
} catch (Exception ex) {
}
}
}
class deleteL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = jta.getSelectedText();
jta.replaceRange("", jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
class selectAllL implements ActionListener {
public void actionPerformed(ActionEvent e) {
jta.selectAll();
}
}
class beijingcolor implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color objcolor = JColorChooser.showDialog(JF, "背景色",
jta.getBackground());
if (objcolor != null) {
jta.setBackground(objcolor);
}
}
}
class ziticolor implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color objcolor = JColorChooser.showDialog(JF, "字體顏色",
jta.getBackground());
if (objcolor != null) {
jta.setForeground(objcolor);
}
}
}
class font implements ActionListener {
public void actionPerformed(ActionEvent e) {
StyleDialog objsetfont = new StyleDialog(JF);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -