📄 edittext.java
字号:
package com;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.filechooser.*;
public class EditText
{
public static void main(String[] args)
{
Initialization.initialization(frame,textArea);
}
static JFrame frame =new JFrame("Text");
static JTextArea textArea=new JTextArea();
static JPopupMenu popupMenu=new JPopupMenu();
static boolean wetherSaved=false;
}
class Initialization
{
static JMenuItem itemSave=new JMenuItem("Save");
public static void initialization(JFrame frame,JTextArea textArea)
{
frame.setSize(600,400);
frame.setBackground(Color.gray);
frame.setLocation(200,200);
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
frame.addWindowListener((WindowListener)
ExitWindowListener.getExitWindowListener());
JMenuBar menuBar=new JMenuBar();
frame.setJMenuBar(menuBar);
JScrollPane scrollPane=new JScrollPane(textArea);
frame.add(scrollPane);
JMenu menuFile=new JMenu("File");
JMenu menuEdit=new JMenu("Edit");
JMenu menuFormat=new JMenu("Format");
JMenu menuView=new JMenu("View");
JMenu menuHelp=new JMenu("Help");
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuFormat);
menuBar.add(menuView);
menuBar.add(menuHelp);
JMenuItem itemNew=new JMenuItem("New");
itemNew.addActionListener(new NewActionListener());
JMenuItem itemOpen=new JMenuItem("Open");
itemOpen.addActionListener(new OpenActionListener());
itemSave.addActionListener(new SaveActionListener());
JMenuItem itemSaveAs=new JMenuItem("Save as");
itemSaveAs.addActionListener(new SaveAsActionListener());
JMenuItem itemExit=new JMenuItem("Exit ");
itemExit.addActionListener(new ExitActionListener());
JMenuItem itemCopy=new JMenuItem("Copy ");
itemCopy.addActionListener(new CopyActionListener());
JMenuItem itemCut=new JMenuItem("Cut ");
itemCut.addActionListener(new CutActionListener());
JMenuItem itemPase=new JMenuItem("Pase ");
itemPase.addActionListener(new PaseActionListener());
JMenuItem itemDelete=new JMenuItem("Delete ");
itemDelete.addActionListener(new DeleteActionListener());
JSeparator separator3=new JSeparator();
JMenuItem itemSelect=new JMenuItem("Select All ");
itemSelect.addActionListener(new SelectActionListener());
JMenuItem itemDateAndHour=new JMenuItem("Date\\Hour");
itemDateAndHour.addActionListener(new DateAndHourActionListener());
JMenuItem itemFont=new JMenuItem("Font");
//itemFont.addActionListener(new FontActionListener());
JMenuItem itemHelp=new JMenuItem("Help");
JMenuItem itemAbout=new JMenuItem("About Text");
itemAbout.addActionListener(new AboutActionListener());
menuFile.add(itemNew);
menuFile.add(itemOpen);
menuFile.add(itemSave);
menuFile.add(itemSaveAs);
JSeparator separator=new JSeparator();
menuFile.add(separator);
menuFile.add(itemExit);
menuEdit.add(itemCopy);
menuEdit.add(itemCut);
menuEdit.add(itemPase);
menuEdit.add(itemDelete);
menuEdit.add(separator3);
menuEdit.add(itemSelect);
menuEdit.add(itemDateAndHour);
menuFormat.add(itemFont);
menuHelp.add(itemHelp);
JSeparator separatorHelp=new JSeparator();
menuHelp.add(separatorHelp);
menuHelp.add(itemAbout);
//EditText.frame.getContentPane().setLayout(new FlowLayout());
//EditText.frame.getContentPane().add(EditText.popupMenu);
//注意正确的添加弹出菜单的方法
EditText.textArea.addMouseListener(new popupEvent());
EditText.popupMenu.pack();
JMenuItem popupCopy=new JMenuItem("Copy");
JMenuItem popupCut=new JMenuItem("Cut");
JMenuItem popupPase=new JMenuItem("Pase");
JMenuItem popupDelete=new JMenuItem("Delete");
JSeparator separator2=new JSeparator();
JMenuItem popupSelectAll=new JMenuItem("Select All");
EditText.popupMenu.add(popupCopy);
popupCopy.addActionListener(new CopyActionListener());
EditText.popupMenu.add(popupCut);
popupCut.addActionListener(new CutActionListener());
EditText.popupMenu.add(popupPase);
popupPase.addActionListener(new PaseActionListener());
EditText.popupMenu.add(popupDelete);
popupDelete.addActionListener(new DeleteActionListener());
EditText.popupMenu.add(separator2);
EditText.popupMenu.add(popupSelectAll);
popupSelectAll.addActionListener(new SelectActionListener());
frame.setVisible(true);
}
}
//处理窗体的关闭事件
class ExitWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
if(EditText.wetherSaved /*||(EditText.textArea.getColumns()==0)*/)
{
System.exit(0);
}
else
{
try
{
String str="Please save the text!";
final JDialog msgDialog=new JDialog(EditText.frame,str,false);
msgDialog.setSize(350, 150);
Point msgDialogPoint=new Point();
EditText.frame.getLocation(msgDialogPoint);
msgDialog.setLocation(msgDialogPoint.x+100,msgDialogPoint.y+100);
msgDialog.setTitle("The text is not saved!");
msgDialog.getContentPane().setLayout(new GridLayout(2,1));
JPanel panel1=new JPanel(new FlowLayout());
JPanel panel2=new JPanel(new FlowLayout());
msgDialog.add(panel1);
msgDialog.add(panel2);
String strCaution="The text is not saved,would you want to save it?";
JLabel cautionLabel=new JLabel(strCaution);
panel1.add(cautionLabel);
JButton cautionBtn1=new JButton("ok");
cautionBtn1.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
msgDialog.setVisible(false);
SaveActionListener save=new SaveActionListener();
save.actionPerformed(SaveActionListener.getActionEvent());
System.exit(0);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
JButton cautionBtn2=new JButton("cancel");
cautionBtn2.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
System.exit(0);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
panel2.add(cautionBtn1);
panel2.add(cautionBtn2);
msgDialog.setVisible(true);
}
catch(Exception eexx)
{
eexx.getStackTrace();
}
}
}
public static ExitWindowListener getExitWindowListener()
{
return new ExitWindowListener();
}
}/**/
//File菜单下New事件
class NewActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
EditText.textArea.setText(new String());
EditText.wetherSaved=false;
}
}
//File菜单下Exit事件
class ExitActionListener implements ActionListener
{
static ActionEvent actionEvent=new ActionEvent(Initialization.itemSave,1,null);
public static ActionEvent getActionEvent()
{
return actionEvent;
}
public void actionPerformed(ActionEvent e)
{
if((EditText.textArea.getText()=="") /*|| (EditText.wetherSaved==true)*/)
{
System.exit(0);
}
else
{
try
{
String str="Please save the text!";
final JDialog msgDialog=new JDialog(EditText.frame,str,false);
msgDialog.setSize(350, 150);
Point msgDialogPoint=new Point();
EditText.frame.getLocation(msgDialogPoint);
msgDialog.setLocation(msgDialogPoint.x+100,msgDialogPoint.y+100);
msgDialog.setTitle("The text is not saved!");
msgDialog.getContentPane().setLayout(new GridLayout(2,1));
JPanel panel1=new JPanel(new FlowLayout());
JPanel panel2=new JPanel(new FlowLayout());
msgDialog.add(panel1);
msgDialog.add(panel2);
String strCaution="The text is not saved,would you want to save it?";
JLabel cautionLabel=new JLabel(strCaution);
panel1.add(cautionLabel);
JButton cautionBtn1=new JButton("ok");
cautionBtn1.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
msgDialog.setVisible(false);
SaveActionListener save=new SaveActionListener();
save.actionPerformed(SaveActionListener.getActionEvent());
System.exit(0);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
JButton cautionBtn2=new JButton("cancel");
cautionBtn2.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
System.exit(0);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
panel2.add(cautionBtn1);
panel2.add(cautionBtn2);
msgDialog.setVisible(true);
}
catch(Exception exxx)
{
exxx.getStackTrace();
}
}
}
}
//File菜单下Open事件
class OpenActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
FileDialog fileOpen=
new FileDialog(EditText.frame,"Open",FileDialog.LOAD);
fileOpen.setVisible(true);
//FileNameExtensionFilter filter=new FileNameExtensionFilter("Text file","txt");
String fileName=fileOpen.getDirectory()+fileOpen.getFile();
if(fileName!=null)
{
try
{
FileInputStream fileinput=new FileInputStream(fileName);
byte [] buf =new byte [10*1024];
int len=fileinput.read(buf);
EditText.textArea.setText(new String());
EditText.textArea.append(new String(buf,0,len));
fileinput.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
}
//File菜单下Save事件
class SaveActionListener implements ActionListener
{
static ActionEvent actionEvent=new ActionEvent(Initialization.itemSave,1,null);
public static ActionEvent getActionEvent()
{
return actionEvent;
}
public void actionPerformed(ActionEvent ex)
{
JFileChooser chooser = new JFileChooser( );
FileNameExtensionFilter filter = new FileNameExtensionFilter(
".txt", "txt");
chooser.setFileFilter(filter);
int returnVal = chooser.showSaveDialog(EditText.frame);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
try
{
String strPath=chooser.getCurrentDirectory().toString()
+File.separator+chooser.getSelectedFile().getName()
+chooser.getFileFilter().getDescription();
//+File.separator+chooser.getSelectedFile().list().toString();
//System.out.println(strPath);
FileOutputStream output=new FileOutputStream(strPath);
byte [] fileContent=new byte[10*1024];
fileContent=EditText.textArea.getText().getBytes();
output.write(fileContent);
output.close();
}
catch(Exception e)
{
e.getStackTrace();
}
EditText.wetherSaved=true;
}
//用FileDialog
/*FileDialog fileSave=
new FileDialog(EditText.frame,"Save text",FileDialog.SAVE);*/
//fileSave.setVisible(true);
/*try
{
String fileName2=fileSave.getDirectory()+fileSave.getFile();
FileOutputStream fileOutput=new FileOutputStream(fileName2);
byte [] fileContent =new byte[10*1024];
fileContent= EditText.textArea.getText().getBytes();
fileOutput.write(fileContent);
fileOutput.close();
EditText.wetherSaved=true;
}
catch(Exception exx)
{
exx.getStackTrace();
}*/
}
}
//File菜单下Save as
class SaveAsActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
FileDialog fileSaveAs=new FileDialog(EditText.frame,"Save As:",FileDialog.SAVE);
fileSaveAs.setVisible(true);
String fileName=fileSaveAs.getDirectory()+fileSaveAs.getFile();
try
{
FileOutputStream output=new FileOutputStream(fileName);
byte [] buf=new byte[10*1024];
buf=EditText.textArea.getText().getBytes();
output.write(buf);
EditText.wetherSaved=true;
}
catch(Exception ee)
{
ee.getStackTrace();
}
}
}
//Edit菜单下Copy事件
class CopyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
EditText.textArea.copy();
}
}
//Edit: Cut
class CutActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
EditText.textArea.cut();
}
}
//Edit :Pase item.
class PaseActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
EditText.textArea.paste();
}
}
//Edit:Delete
class DeleteActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
EditText.textArea.replaceSelection("");
}
}
//Edit: Select item.
class SelectActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
EditText.textArea.selectAll();
}
}
//Edit:Date\Hour
class DateAndHourActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//error sentence:Calendar calendar=
//new Calendar(TimeZone.getDefault(),Locale.CHINA);
Calendar calendar=Calendar.getInstance();
String str1=String.valueOf(calendar.get(Calendar.YEAR));
String str2=String.valueOf(calendar.get(Calendar.MONTH));
String str3=String.valueOf(calendar.get(Calendar.DATE));
String str4=String.valueOf(calendar.get(Calendar.HOUR));
String str5=String.valueOf(calendar.get(Calendar.MINUTE));
String date=str1+"年"+ str2+"月"+str3+"日";
String hour=str4+":"+str5;
EditText.textArea.insert(date+hour,EditText.textArea.getCaretPosition());
}
}
//Format: Font
/*class FontActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Font font=new Font(Font.DIALOG,Font.PLAIN,50);
font.
}
}*/
//Help: About Text
class AboutActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//JOptionPane aboutDialog=new JOptionPane();
JOptionPane.showMessageDialog(EditText.frame,"Java text 1.0\n copyright:",
"About Text",JOptionPane.INFORMATION_MESSAGE);
}
}
//Popup Menu
class popupEvent implements MouseListener
{
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
EditText.popupMenu.show(e.getComponent(),e.getX(),e.getY());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -