📄 jnotepad.java
字号:
package enigma;
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 beijincolor());
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 beijincolor 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 + -