📄 mytext.java
字号:
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
public class myText extends JFrame implements ActionListener{
JTextArea textArea=new JTextArea();//用来编辑的文本区
myText mfm;
JScrollPane scroll;
fontChoose fontMenu;
MenuBar menuBar=new MenuBar();
Menu fileMenu=new Menu("文件");
MenuItem newItem=new MenuItem("新建");
MenuItem openItem=new MenuItem("打开");
MenuItem saveItem=new MenuItem("保存");
MenuItem saveAsItem=new MenuItem("另存为");
MenuItem exitItem=new MenuItem("退出");
Menu editMenu=new Menu("编辑");
MenuItem replaceItem=new MenuItem("替换");
MenuItem selectItem=new MenuItem("全选");
MenuItem copyItem=new MenuItem("复制");
MenuItem cutItem=new MenuItem("剪切");
MenuItem pasteItem=new MenuItem("粘贴");
Menu geshiItem=new Menu("格式");
MenuItem fontItem=new MenuItem("字体");
MenuItem colorItem=new MenuItem("颜色");
Menu aboutMenu=new Menu("帮助");
MenuItem helpItem=new MenuItem("关于。。。。");
String fileName="";//默认文件名空
Toolkit toolKit=Toolkit.getDefaultToolkit();
Clipboard clipBoard=toolKit.getSystemClipboard();//剪贴板对象
/*打开文件对话框和保存文件对话框*/
private FileDialog openFileDialog=new FileDialog(this,"Open File",FileDialog.LOAD);
private FileDialog saveAs=new FileDialog(this, "Save File As", FileDialog.SAVE);
public myText(){
setTitle("我的记事本!");
setFont(new Font("Times New Roman",Font.PLAIN,12));
setBackground(Color.white);
setSize(500,400);
/*在窗口中添加菜单栏*/
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveAsItem);
fileMenu.add(exitItem);
editMenu.add(replaceItem);
editMenu.add(selectItem);
editMenu.add(copyItem);
editMenu.add(cutItem);
editMenu.add(pasteItem);
geshiItem.add(fontItem);
geshiItem.add(colorItem);
aboutMenu.add(helpItem);
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(geshiItem);
menuBar.add(aboutMenu);
setMenuBar(menuBar);
add(textArea);
addWindowListener(new WindowAdapter(){//指定窗口退出方式
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
/*注册各个菜单的事件监听器*/
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveAsItem.addActionListener(this);
exitItem.addActionListener(this);
replaceItem.addActionListener(this);
selectItem.addActionListener(this);
copyItem.addActionListener(this);
cutItem.addActionListener(this);
pasteItem.addActionListener(this);
fontItem.addActionListener(this);
colorItem.addActionListener(this);
helpItem.addActionListener(this);
replaceItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
JPanel swapPanel = new JPanel();
JLabel lookupLabel = new JLabel("要替换的内容");
JTextField inputText = new JTextField(10);
JLabel swapLabel = new JLabel("替换为:");
JTextField changetoText = new JTextField(10);
swapPanel.add( lookupLabel );
swapPanel.add( inputText );
swapPanel.add( swapLabel );
swapPanel.add( changetoText );
JOptionPane.showMessageDialog(null,swapPanel);
String text = textArea.getText();
String changeText = text.replace(inputText.getText(),changetoText.getText());
textArea.setText(changeText);
}
});
helpItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
JOptionPane.showMessageDialog(null,"网络B061彭卫","200607024119",JOptionPane.INFORMATION_MESSAGE );
}
});
}
public void actionPerformed(ActionEvent e){
Object eventSource=e.getSource();//利用事件源判断被单击的菜单项
if(eventSource==newItem){
textArea.setText("");//新建时清空文本区
}else if(eventSource==openItem){
openFileDialog.show();//显示打开文件对话框
fileName=openFileDialog.getDirectory() + openFileDialog.getFile();
if(fileName!=null)
readFile(fileName);
}else if(eventSource==saveItem){
saveAs.show();
fileName = saveAs.getDirectory()+saveAs.getFile();
if(fileName !=null)
writeFile(fileName);
}else if(eventSource==saveAsItem){
saveAs.show();//显示保存文件对话框
fileName = saveAs.getDirectory()+saveAs.getFile();
if(fileName!=null)
writeFile(fileName);
}else if(eventSource==selectItem){
textArea.selectAll();
}else if(eventSource==copyItem){
String text=textArea.getSelectedText();
StringSelection selection=new StringSelection(text);
clipBoard.setContents(selection, null);
}else if(eventSource==cutItem){
String text=textArea.getSelectedText();
StringSelection selection=new StringSelection(text);
clipBoard.setContents(selection, null);
/*剪切时用空串代替被选的字符*/
textArea.replaceRange("", textArea.getSelectionStart(), textArea.getSelectionEnd());
}else if(eventSource==pasteItem){
Transferable contents=clipBoard.getContents(this);
if(contents==null) return;
String text;
text="";
try{
text=(String)contents.getTransferData(DataFlavor.stringFlavor);
}catch(Exception exception){
}
textArea.replaceRange(text, textArea.getSelectionStart(), textArea.getSelectionEnd());
}else if(eventSource==exitItem){
int conform=JOptionPane.showConfirmDialog(null, "文件已修改,要保存修改吗?",
"文件保存?", JOptionPane.YES_NO_CANCEL_OPTION);
if(conform==JOptionPane.YES_OPTION){
if(fileName!=null){
System.exit(0);
}
}else if(conform==JOptionPane.NO_OPTION){
System.exit(0);
}
}else if(eventSource==fontItem){
setFont();
}else if(eventSource==colorItem){
setcolor();
}
}
public void readFile(String fileName){//读文件
try{
File file=new File(fileName);
FileReader readIn=new FileReader(file);
int size=(int)file.length();
int charsRead=0;
char[] content=new char[size];
while(readIn.ready())
charsRead += readIn.read(content,charsRead,size-charsRead);
readIn.close();
textArea.setText(new String(content,0,charsRead));
}catch(IOException e){
System.out.println("error opening file");
}
}
public void writeFile(String fileName){
try{
File file=new File(fileName);
FileWriter writeOut=new FileWriter(file);
writeOut.write(textArea.getText());
writeOut.close();
}catch(IOException e){
System.out.println("error writeing file");
}
}
public void rewriteFile(String fileName){
String s=textArea.getText();
try{
File f = new File( fileName );//新建文件
BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中
bw.write(s , 0 , s.length());
bw.close();
}
catch(IOException ie_){
System.out.println(" IO error");
System.exit(0);
}
}
public void setcolor(){
Color c=JColorChooser.showDialog(null, "颜色", textArea.getForeground());
if(c!=null)
textArea.setForeground(c);
}
private void setFont() {
fontMenu=new fontChoose(this);
}
public void setfont1(){
Font f=fontMenu.getF();
textArea.setFont(f);
fontMenu.dispose();
}
public static void main(String args[]){
Frame frame=new myText();
frame.show(); }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -