?? edit.java
字號:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
public class edit
{
private JFrame f;
FileDialog sv,op;
boolean HasSaved;
boolean HasChanged;
String Savepath="";
JButton b1,b2,b3,b4,b5,b6,b7;
private JTextArea text;
private JMenuBar mb;
private JMenu m1,m2,m3,mhelp;
private JMenuItem mi11,mi12,mi13,mi15,mi21,mi22,mi23,mi31,mi32,mi33,mih;
Document Doc;
public edit()
{
f=new JFrame("Edit");
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
HasChanged=false;
HasSaved=false;
BorderLayout borderlayout = new BorderLayout();
f.getContentPane().setLayout(borderlayout);
text=new JTextArea();
b1=new JButton(new ImageIcon("new.jpg")); //按鈕
b2=new JButton(new ImageIcon("open.jpg"));
b3=new JButton(new ImageIcon("save.jpg"));
b4=new JButton(new ImageIcon("cut.jpg"));
b5=new JButton(new ImageIcon("copy.jpg"));
b6=new JButton(new ImageIcon("paste.jpg"));
b7=new JButton(new ImageIcon("help.jpg"));
b1.setToolTipText("新建");
b2.setToolTipText("打開");
b3.setToolTipText("保存");
b4.setToolTipText("剪切");
b5.setToolTipText("復(fù)制");
b6.setToolTipText("粘貼");
b7.setToolTipText("幫助");
b1.addActionListener(new MyListener());
b2.addActionListener(new MyListener());
b3.addActionListener(new MyListener());
b4.addActionListener(new MyListener());
b5.addActionListener(new MyListener());
b6.addActionListener(new MyListener());
b7.addActionListener(new MyListener());
panel.add(b1);
panel.add(b2);
panel.add(b3);
panel.add(b4);
panel.add(b5);
panel.add(b6);
panel.add(b7);
f.getContentPane().add(panel, borderlayout.NORTH);
mb=new JMenuBar(); // 菜單
m1=new JMenu("File");
m2=new JMenu("Eidt");
m3=new JMenu("Format");
mhelp=new JMenu("Help");
mi11=new JMenuItem("New");
mi12=new JMenuItem("Open");
mi13=new JMenuItem("Save");
mi15=new JMenuItem("Exit");
mi21=new JMenuItem("Cut");
mi22=new JMenuItem("Copy");
mi23=new JMenuItem("Paste");
mi31=new JMenuItem("Font");
mi32=new JMenuItem("Foreground Color");
mi33=new JMenuItem("Background Color");
mih=new JMenuItem("幫助文件");
mi11.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_MASK,false));
mi12.setAccelerator(KeyStroke.getKeyStroke('O',KeyEvent.CTRL_MASK,false));
mi13.setAccelerator(KeyStroke.getKeyStroke('S',KeyEvent.CTRL_MASK,false));
mi21.setAccelerator(KeyStroke.getKeyStroke('X',KeyEvent.CTRL_MASK,false));
mi22.setAccelerator(KeyStroke.getKeyStroke('C',KeyEvent.CTRL_MASK,false));
mi23.setAccelerator(KeyStroke.getKeyStroke('V',KeyEvent.CTRL_MASK,false));
mih.addActionListener(new MyListener());
mi11.addActionListener(new MyListener());
mi12.addActionListener(new MyListener());
mi13.addActionListener(new MyListener());
mi15.addActionListener(new MyListener());
mi21.addActionListener(new MyListener());
mi22.addActionListener(new MyListener());
mi23.addActionListener(new MyListener());
mi31.addActionListener(new MyListener());
mi32.addActionListener(new MyListener());
mi33.addActionListener(new MyListener());
f.addWindowListener(new WindowClosing());
m1.add(mi11);
m1.add(mi12);
m1.add(mi13);
m1.addSeparator();
m1.add(mi15);
op=new FileDialog(f,"打開",FileDialog.LOAD);
sv=new FileDialog(f,"保存",FileDialog.SAVE);
m2.add(mi21);
m2.add(mi22);
m2.add(mi23);
m3.add(mi31);
m3.add(mi32);
m3.add(mi33);
f.setJMenuBar(mb);
mb.add(m1);
mb.add(m2);
mb.add(m3);
mhelp.add(mih);
mb.add(mhelp);
f.getContentPane().add(new JScrollPane(text), borderlayout.CENTER);
Doc=text.getDocument();
Doc.addDocumentListener(new MyTextListener());//文本改變事件監(jiān)聽
f.setSize(500,400);
f.setVisible(true);
}
public void SaveFile(JFrame parent)
//自定義保存文件的函數(shù),可以減少代碼的重復(fù)
{
HasSaved=true;
FileDialog Savefd=new FileDialog(parent,"save",FileDialog.SAVE);
Savefd.show();
try
{
Savepath=Savefd.getDirectory()+Savefd.getFile();
PrintWriter out=new PrintWriter(new FileWriter(Savepath));
out.print(text.getText());
out.close();
}
catch(Exception eee){}
}
class MyListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==mih||e.getSource()==b7) //幫助
{
Font font = new Font("Dialog", Font.BOLD, 16);
UIManager.put("OptionPane.messageFont", font);
UIManager.put("OptionPane.buttonFont", font);
JOptionPane.showMessageDialog(f,"作者:周龍龍\r\n"+"E-mail:zllkyo@yahoo.com.cn\r\n"+"開發(fā)工具: JCreator 3.50.010");
}
if(e.getSource()==mi11||e.getSource()==b1) // 新建
{
int flag=-1;
if(HasSaved==false&&HasChanged)
{
flag=JOptionPane.showConfirmDialog(f,
"文件文字已改變,是否保存文件?","提示",
JOptionPane.YES_NO_CANCEL_OPTION);
}
else
{
text.setText("");
}
switch(flag)
{
case 0:
{
SaveFile(f);
text.setText("");
break;
}
case 1: { text.setText("");break; }
case 2: { break;}
}
text.setForeground(Color.black);
text.setBackground(Color.white);
HasSaved=true;
HasChanged=false;
}
if(e.getSource()==b2||e.getSource()==mi12) // 打開
{
String str;
int flag=-1;
if(HasSaved==false&&HasChanged)
{
flag=JOptionPane.showConfirmDialog(f,
"文件文字已改變,是否保存文件?","提示",
JOptionPane.YES_NO_OPTION);
}
switch(flag)
{
case 0:
{
SaveFile(f);
text.setText("");
break;
}
case 1: {break;}
}
op.setVisible(true);
try
{
if(op.getFile()!=null)
{
File fl=new File(op.getDirectory(),op.getFile());
FileReader fr=new FileReader(fl);
BufferedReader br=new BufferedReader (fr);
text.setText("");
while((str=br.readLine())!=null)
text.append(str+'\n');
fr.close();
}
}
catch(Exception e1)
{
Font font = new Font("Dialog", Font.BOLD, 16);
UIManager.put("OptionPane.messageFont", font);
UIManager.put("OptionPane.buttonFont", font);
JOptionPane.showMessageDialog(f,"打開文件出錯","錯誤",JOptionPane.ERROR_MESSAGE);
}
HasSaved=true;
HasChanged=false;
}
if(e.getSource()==b3||e.getSource()==mi13) // 保存
{
if(HasSaved==false&&HasChanged)
{
String str;
sv.setVisible(true);
try
{
File fl=new File(sv.getDirectory(),sv.getFile());
FileWriter fw=new FileWriter(fl);
BufferedWriter bw=new BufferedWriter (fw);
String gt=text.getText();
bw.write(gt,0,gt.length());
bw.flush();
fw.close();
}
catch(Exception e1)
{
}
}
HasSaved=true;
HasChanged=false;
}
if(e.getSource()==mi15) //退出
{
System.exit(0);
}
if(e.getSource()==mi21||e.getSource()==b4) //剪切
{
text.cut();
}
if(e.getSource()==mi22||e.getSource()==b5) //復(fù)制
{
text.copy();
}
if(e.getSource()==mi23||e.getSource()==b6) //粘貼
{
text.paste();
}
if(e.getSource()==mi31) //字體
{
Font cur=text.getFont();
int type=Font.BOLD;
FontSet fs=new FontSet(f,"字體設(shè)置",true);
int size=fs.font3();
fs.show();
if(fs.flag)
{
switch(fs.font2())
{
case 0:type=Font.PLAIN;break;
case 1:type=Font.ITALIC;break;
case 2:type=Font.BOLD; break;
case 3:type=Font.BOLD+Font.ITALIC;break;
}
switch(fs.font3())
{
case 0:size=12;break;
case 1:size=14;break;
case 2:size=18;break;
case 3:size=20;break;
case 4:size=24;break;
case 5:size=36;break;
case 6:size=48;break;
case 7:size=72;break;
}
Font f=new Font(fs.font1(),type,size);
text.setFont(f);
}
else
{
text.setFont(cur);
}
}
if(e.getSource()==mi32) //前景色
{
JColorChooser cChooser=new JColorChooser();
Color newcolor=cChooser.showDialog(null,"Color Selector" ,null);
text.setForeground(newcolor);
HasChanged=true;
HasSaved=false;
}
if(e.getSource()==mi33) //背景色
{
JColorChooser cChooser=new JColorChooser();
Color newcolor=cChooser.showDialog(null,"Color Selector" ,null);
text.setBackground(newcolor);
HasChanged=true;
HasSaved=false;
}
}
}
class WindowClosing extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
int flag=-1;
if(HasSaved==false&&HasChanged)
{
flag=JOptionPane.showConfirmDialog(f,
"文件文字已改變,是否要保存?","提示",
JOptionPane.YES_NO_CANCEL_OPTION);
}
else
{
f.dispose();
System.exit(0);
}
switch(flag)
{
case 0:
{
SaveFile(f);
f.dispose();
System.exit(0);
break;
}
case 1:
{
f.dispose();
System.exit(0);
break;
}
}
}
}
class MyTextListener implements DocumentListener {
public void changedUpdate(DocumentEvent e)
{
HasChanged=true;
HasSaved=false;
}
public void insertUpdate(DocumentEvent e)
{
HasChanged=true;
HasSaved=false;
}
public void removeUpdate(DocumentEvent e)
{
HasChanged=true;
HasSaved=false;
}
}
public class FontSet extends JDialog{ //字體
private String font1="";
JLabel txtStr=new JLabel("請選擇字體");
JLabel txt2=new JLabel("請選擇字型");
JLabel txt3=new JLabel("請選擇字號");
List list1 = new List(5,false);
List list2 = new List(3,false);
List list3 = new List(5,false);
JButton btnOk=new JButton("確定");
JButton btnNo=new JButton("撤銷");
FlowLayout flowLayout1=new FlowLayout();
boolean flag=true;
int type;
int size;
FontSet(Frame frame,String title,boolean modal){
this.setTitle("字體設(shè)置");
this.setSize(200,410);
this.setModal(true);
txtStr.setSize(200,100);
list1.setSize(100,60);
list1.setMultipleMode(false);
this.txt2.setSize(200,100);
list2.setSize(100,100);
this.txt3.setSize(200,100);
list3.setSize(100,60);
btnOk.setMnemonic('Y');
btnOk.setSize(100,20);
btnOk.addActionListener(new btnOk_actionAdapter(this));
btnNo.setMnemonic('N');
btnNo.setSize(100,20);
btnNo.addActionListener(new btnNo_actionAdapter(this));
GraphicsEnvironment gl=GraphicsEnvironment.getLocalGraphicsEnvironment();
String fontName[]=gl.getAvailableFontFamilyNames();
for(int i=0;i<fontName.length;i++){
list1.add(fontName[i]);
}
String fontx[]={"常規(guī)","斜體","粗體","粗斜體"};
for(int i=0;i<fontx.length;i++){
list2.add(fontx[i]);
}
String h[]=new String[8];
h[0]="12";
h[1]="14";
h[2]="18";
h[3]="20";
h[4]="24";
h[5]="36";
h[6]="48";
h[7]="72";
for(int i=0;i<8;i++)
{
list3.add(h[i]);
}
list1.select(fontName.length);
list2.select(0);
list3.select(0);
this.getContentPane().setLayout(flowLayout1);
this.getContentPane().add(txtStr,flowLayout1);
this.getContentPane().add(list1,flowLayout1);
this.getContentPane().add(this.txt2,flowLayout1);
this.getContentPane().add(this.list2,flowLayout1);
this.getContentPane().add(this.txt3,flowLayout1);
this.getContentPane().add(this.list3,flowLayout1);
this.getContentPane().add(btnOk,flowLayout1);
this.getContentPane().add(btnNo,flowLayout1);
}
FontSet(){
this(null,"",false);
}
void btnOk_actionPerformed(ActionEvent e){
this.flag=true;
this.font1=this.list1.getSelectedItem();
this.type=this.list2.getSelectedIndex();
this.size=this.list3.getSelectedIndex();
this.dispose();
}
void btnNo_actionPerformed(ActionEvent e){
this.flag=false;
this.dispose();
}
public String font1(){
return this.font1;
}
public int font2(){
return this.type;
}
public int font3()
{
return this.size;
}
}
class btnOk_actionAdapter implements java.awt.event.ActionListener{
FontSet adaptee;
btnOk_actionAdapter(FontSet adaptee){
this.adaptee=adaptee;
}
public void actionPerformed(ActionEvent e){
adaptee.btnOk_actionPerformed(e);
}
}
class btnNo_actionAdapter implements java.awt.event.ActionListener{
FontSet adaptee;
btnNo_actionAdapter(FontSet adaptee){
this.adaptee=adaptee;
}
public void actionPerformed(ActionEvent e){
adaptee.btnNo_actionPerformed(e);
}
}
public static void main(String arg[])
{
edit tm=new edit();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -